| CS 313 | Programming Languages | Spring 2009 |
|
|
The following is a tentative schedule of topics to be covered in this course. Readings refer to the text by Sethi.
| Week | Date | Topic | Reading |
| 1 | 2/9 | Intro, History, Grammars | Ch 1, 2 |
| 2-3 | 2/16 | Procedural programming Data types, parameter passing, scope, procedure activation (C, Pascal, Python) |
Ch 4, 5 |
| 4-5 | 3/2 | Object-oriented programming Class structure, information hiding, inheritance (Smalltalk, more Python) |
Ch 6, 7 |
| 6 | 3/14 | Review, Midterm, Spring break | |
| 7-9 | 3/30 | Functional programming Recursion vs. iteration, higher order functions, lambda expressions, procedure evaluation (Scheme, ML, more Python) |
Ch 8, 9, 10 |
| 10-11 | 4/20 | Logic Programming Unification, prolog execution model, rule order and goal order (Prolog) |
Ch 11 |
| 12 | 5/4 | Advanced topics |
There will also be several quizzes to test assigned reading and the material covered the previous class, usually one quiz every 1-2 weeks at the beginning of class. The lowest quiz score will be dropped when computing your final grade. Missed quizzes cannot be made up.
Your final grade will be based on homeworks (40%), quizzes (10%), a midterm exam (20%), and a final exam (30%). The midterm exam is scheduled for Wednesday, 3/18, 7:30-9:30pm. The final exam will be self-scheduled. Both exams will be open book, open notes.
Unless otherwise instructed, feel free to discuss problem sets with other students and exchange ideas about how to solve them. However, there is a thin line between collaboration and plagiarizing the work of others. Therefore, it is required that you must compose your own solution to each assignment. In particular, while you may discuss strategies for approaching the programming assignments with your classmates and may receive debugging help from them, you are required to write all of your own code. It is unacceptable (1) to write a program together and turn in two copies of the same program or (2) to copy code written by your classmates. This implies that you should never have in your possession a copy of all or part of another student's homework. It is your own responsibility to protect your work from unauthorized access.
If a programming assignment is designated a group project, then the above rules apply to a group. That is, you are allowed to collaborate on the assignment with your partners, but work with others is restricted as discussed above. All exams, of course, must be entirely your own work and you may not collaborate with anyone.
When working on homework problems, it is perfectly reasonable to consult public literature (books, articles, etc.) for hints, techniques, and even solutions. However, you must reference any sources that contribute to your solution. It is also OK to borrow code from the textbook, from materials discussed in class, and from other sources as long as you give proper credit. Assignments and solutions from previous terms are not considered to be part of the "public" literature, and consulting problem set solutions from previous terms constitutes a violation of the Honor Code.
If you are uncertain how the Honor Code applies to a particular assignment, please ask me. The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.