This course will help you learn how programming languages are designed, specified, and implemented. You will learn about broad areas of commonality that underlie many superficially different languages, as well as about the critical distinctions between languages that may at first glance seem similar. Although we will spend some time working with a few example languages, the goal is not to make you a master of any of these languages, but rather to give you ways to think about computer languages in general. This skill will serve you well as you encounter future languages.
Office: Olin 306
Phone: x7473
Homepage: http://homepages.gustavus.edu/~lyu/
Office Hours:
Visitors are welcome whenever my office door is opened, even outside scheduled office hours. Please email me to schedule an appointments.
It is very important for students to seek out help, especially with homework exercercises. It is the key to doing well in this course.
Weekly Schedule:
One of the biggest challenges students face in this course is dealing with the complexity of the homework and lab assignments. The key for surviving in this course is to utilize the help offered outside of the classroom.
All course materials will be available through my World Wide Web page. The URL for this course is https://homepages.gac.edu/~lyu/teaching/mcs287-s25/.
The primary text for this course is Modern Programming Languages: A Practical Introduction, 2nd Edition, by Adam Brooks Webber. Numerically specified readings in the syllabus refer to its chapters and sections.
You will find that reading the corresponding chapters before and after lectures is a key part of doing well in this course.
There will be two tests as shown on the syllabus. If you have a conflict with a testing time, please contact me as soon as possible to make an alternative arrangement.
The two tests will be semi-open-book. You may use all the course materials archived on Moodle and on the course web page; as well as a single 8 1/2 by 11 sheet of paper with hand-written notes for reference. Both sides of the sheet are OK.
In doing assignments and homework, you may discuss the problems and their solutions with fellow students, but you should make an effort to solve each problem on your own. Give credit to the people and/or reading sources that help you find the solutions, be they fellow students, textbooks, journals, or internet postings. Be explicit and acknowledge clearly what sort of help you received. Failure to do so will be considered cheating.As a general rule, no hard copies of writings should be taken away and nothing should be copied down after a collaboration. If you and a classmate are discussing a problem, it is okay for you to sketch out the approach to solution on a black board or on a piece of paper. However, after the discussion, the piece of paper should be destroyed, the black board should be erased, and nothing may be copied down.
One issue that came up during this course from previous semesters is that students often expect teaching assistants or the professor to directly give them the answer to a homework problem or a lab assignment. It should go without saying that directly giving you any parts of a solution is a violation of the honor code. Please do not expect that from the teaching assistants or the professor. We will only give you hints and suggestions. If you struggle and get frutrated with a project or a mastery homework problem, we will do our best to help you, but that's just a part of the learning process; it is not something we are obligated to help you avoid completely.
Some class days, as shown in the syllabus, we will meet for lab work. You will work on the assignments on your laptop. One or more of those lab days will be provided for you to work on each lab assignment. However, you will generally need to spend additional time on the assignment outside of class.
The syllabus shows due dates for five homework assignments; each will typically consist of a few problems. For each homework assignment, you are to turn in at most two drafts of the solution.
First, You must turn in a first draft of the solution to each problem in an assignment by the assignment's due date, at the start of the lecture. The grader will then grade your solutions and give you as much written comments as possible to help you with the next draft. The grader will also mark each problem as mastered (M) or not yet mastered (N). You should really take these gradings as an invitation to come talk to me during office hours or talk to the tutors during tutoring sessions. If you do not turn in a first draft by an assignment's due date, your score to the corresponding homework assignment is zero, there is no late penalty for the first draft.
Please note that if your homework problem was graded as mastered (M), it is still possible that your solution contains errors. In general if your solution was more than 90% correct the grader will give you an "M" and write down your errors as comments. You should read these comments for the midterms and the final.
If 60% of the solutions in your graded first draft are marked as "M", you will get to submit a second draft. For your second draft, you will get a chance to solve the problems you had previous recieved "N" for. You only need to submit solutions for problems you had previous recieved "N" for in the first draft, on separate sheets of papers. However, I request that you include your frst draft as a part of the submission (stabled together with your second draft).
You must submit the second draft for homework 1, 2 and 3 by Monday, 3/10/2025 (the review lecture for test #1), by the start of class. You must submit the second draft for homework 4, 5, 6 by Friday, 4/25/2024 (the review lecture for test #2), by the start of class. These cutoff dates are intentionally synchronized with the test review days; the point of the homeworks is to prepare you for the tests. If you do not turn in a second draft by an dates specified, your score to the corresponding homework assignment is the score of your first draft, there is no late penalty for the second draft; if you miss the (firm) deadline for the second draft, you will recieve zero on the cooresponding homework.
You can submit all your drafts via Moodle . You can type your solutions using a text editor or write down your solutions on a piece of paper. If you wrote down your solutions on a piece of paper, you must scan them (taking a picture using a scanner program on your phone will do) and submit them via Moodle . Please make sure that your writings are readable. If the grader can not read your writings for a solution, he/she will give you an "N" for the cooresponding question.
The homework portion of your course grade will simply be determined by the fraction of the homework problems you eventually mastered (recieved "M" for).
For this course, I encourage questions, discussions, peer-helping, and explorations. So, I am bringing back the bonus point system. During the semester, you are strongly encouraged to ask questions (during or after lectures) and to take part in discussions. If I feel that you had made a good contribution, you will recieve one bonus point.
Another way of earning bonus points is for you to take a leadership position during group work or classroom coding exercises.
Finally, you will earn bonus points if you have ideas about extra work (such as open questions) you can do and have done them outside of class. You can talk to me about what you had done and show me your work. I will give you bonus points accordingly.
The maximum amount of bonus points per student is 12. They are worth 3 percent of your final grade. That is, if by the end of the semester you had received 12 bonus points from me, you can raise your final percentage by 3%.
The passcode is only available for entering within the first 5 minutes of the class. Thus, if you are more than 5 minutes late to the lecture, you are considered missing the cooresponding lecture and will not be able to record your attendance.
Everyone will start with 5 points of attendance grade at the beginning of the semester (attendance is worth 5% of the final grade). During the semester, one point will be deducted if you miss either a lecture or a lab session. You are allowed 5 "free points" during the semester. You may use those "free points" for sick days, or simply "I am feeling overwhelmed and need a mental health day" (as mental wellbeing is important). If you have influenza-like symptoms (temperature over 100 with headaches, sore throat, or cough), please call Health Service. If they say that you stay home, you should do so, and use one of your "free points".
If you foresee yourself needing more "free points" (for example, if you have an on-going health issue that you see may affect your attendence during the semester), you need to discuss that with me asap, and I have the right to accept or reject your requests based on the circumstances.
If you show up more than 5 minutes late (and miss the period in which you are to record your own attendance) to a lecture, I will make a note of it, and each case will result in one point deduction. If you forgot to record your attendance at the start of a lecture or a lab, I am not responsible to record your attendance for you (you would then need to use one of your "free points" and make sure to record your attendance next time).
Should you miss a class for any reason, you are still responsible for the material covered in there. If there is a project report or homework due that day, you should be sure to submit it (to me, in-person) on time (thus, do not leave your work until the last minute).
This course relies heavily on participations. Students are expected to actively participate in classroom discussions. You may use your laptop in class. However, the use of the computer is restricted to activities deemed appropriate by the instructor. Playing games, watching YouTube, reading e-mail, checking Facebook, and working on assignments for other courses are a few examples of inappropriate activities that can be distracting to the instructor and other students in the course. Any repeat instances from an individual of such will result in further grade deduction.The course components will contribute to your grade in the following proportion:
A: 94-100 | B+: 87-89 | C+: 77-79 | D+: 67-69 | F: < 62 |
A-: 90-93 | B: 83-86 | C: 73-76 | D: 63-66 | |
B-: 80-82 | C-: 70-72 |
Please point out any arithmetic or clerical error I make in grading, and I will gladly fix it. You may also request reconsideration if you feel I have been especially unjust.
All assignments should be readily readable and should not presuppose that I already know what you are trying to say. Use full English sentences where appropriate (namely almost everywhere) and clear diagrams, programs, etc. Remember that your goal is to communicate clearly and that the appearance of these technical items plays a role in this communication process. For anything you submit, please make sure that your name is on them.
Please point out any arithmetic or clerical error I make in grading, and I will gladly fix it. You may also request reconsideration if I have been especially unjust.
Gustavus Adolphus College is committed to ensuring the full participation of all students in its programs. If you have a documented disability (or you think you may have a disability of any nature) and, as a result, need reasonable academic accommodation to participate in class, take tests or benefit from the College's services, then you should speak with the Disability Services staff, for a confidential discussion of your needs and appropriate plans. Course requirements cannot be waived, but reasonable accommodations may be provided based on disability documentation and course outcomes. Accommodations cannot be made retroactively; therefore, to maximize your academic success at Gustavus, please contact Disability Services as early as possible. Disability Services (www.gustavus.edu/advising/disability/) is located in the Academic Support Center. Disability Services Coordinator, Kelly Karstad, (kkarstad@gustavus.edu or x7138), can provide further information.
Support for English learners and multilingual students is available through the Academic Support Center's Multilingual Learner Academic Specialist, Sarah Santos (ssantos@gustavus.edu or x7197). The MLAS can meet individually with students for tutoring in writing, consulting about academic tasks, and helping students connect with the College's support systems. When requested, the MLAS can consult with faculty regarding effective classroom strategies for English learners and multilingual students. The MLAS can provide students with a letter to a professor that explains and supports appropriate academic arrangements (e.g., additional time on tests, additional revisions for papers). Professors make decisions based on those recommendations at their own discretion. In addition, English learners and multilingual students can seek help from peer tutors in the Writing Center ( www.gustavus.edu/writingcenter/).
This is my best guess as to the rate at which we will cover material. However, don't be shocked if I have to post one or more revised syllabi. When I do so, I will make an announcement in class.
Date | Reading | Topic | Due |
---|---|---|---|
1/13 | 1.1-2.5 | Overview and grammars | |
1/15 | 2.6-2.8 | More on grammars | |
1/17 | 3 | Syntax meets semantics | |
1/20 | 4 | Language systems | |
1/22 | 5 | A first look at ML | |
1/24 | A first look at ML, continued | ||
1/27 | Lab 1 | Lab 1: ML Programming | HW 1 |
1/29 | 6 | Types | |
1/31 | Lab 1 continues | ||
2/3 | 7 | A second look at ML | |
2/5 | 8 | Polymorphism | |
2/7 | 9 | A third look at ML | |
2/10 | 11 | Scope | HW 2 |
2/12 | A fourth look at ML | ||
2/14 | Lab 1 concludes | ||
2/17 | 12.1-12.6 | Activation records | Lab 1 |
2/19 | 12.7-12.9 | Closures | |
2/21 | 13 | A first look at Java | |
2/24 | 15 | A second look at Java | |
2/26 | Lab 2 | Interpreter lab preview | |
2/28 | 14.1-14.4 | Memory management | HW 3 |
3/3 | Spring Break (no class) | ||
3/5 | Spring Break (no class) | ||
3/7 | Spring Break (no class) | ||
3/10 | Review/catch-up | ||
3/12 | Lab 2: An Interpreter | ||
3/15 | Test # 1 | ||
3/17 | Barbra Liskov talk | ||
3/19 | Advising Day (no class) | ||
3/21 | More on Java | ||
3/24 | Bracha 1, 2, 3 | Java generics | Lab 2 |
3/26 | Bracha 1, 2, 3 | Java generics | |
3/28 | Lab 3 | Generics lab preview | HW 4 |
3/31 | Bracha 4, 5, 6 | More Java generics | |
4/2 | 16 | Lab 3: Java Generics | |
4/4 | 16 | Object orientation | |
4/7 | 17 | A third look at Java | |
4/9 | Lab 3 continues | ||
4/11 | 18 | Parameters | HW 5 |
4/14 | 19.1-19.7 | A first look at Prolog | |
4/16 | 19.8-19.11 | More prolog | |
4/18 | Semester Break (no class) | ||
4/21 | 20.1-20.4 | Prolog implementation | HW 6 |
4/23 | 20.5-20.7 | More about Prolog | |
4/25 | Review/catch-up/Evaluations | ||
4/28 | Test # 2 | Lab 3 |