Instructor's web page |
CS Fall 2023 Courses |
Class Meetings | Tue + Thu 4:55pm-6:10pm in Kimmel 803 |
First Class | Sep 5, 2023 |
Last Class | Dec 14, 2023 |
Midterm Exam | October 26, 2023, 4:55pm-6:10pm in Kimmel 803 |
Final Exam | Mon, December 18, 6:00pm-7:50pm |
Instructor | Thomas Wies |
Office | 60 Fifth Av, Room 403 |
Office Hours | Wed 2:00-3:00pm, or by appointment |
Tutor | Daniel Feldan |
Office Hours | Tue 2:00-4:00pm in 60FA 446 and Wed 3:00-4:00pm in 60FA 402. |
Grader | Rishu Singh |
Computing professionals have to learn new programming languages all the time. This course teaches the fundamental principles of programming languages that enable you to learn new languages quickly and help you decide which one is best suited for a given task.
We will explore new ways of viewing computation and programs, and new ways of approaching algorithmic problems, making you better programmers overall. The topics covered in this course include
We will explore these topics by building interpreters for programming languages of increasing complexity. The course will thus be accompanied by an extensive programming project. We will use the programming language Scala for this project, which you will also learn in this course.
Prerequisites: Computer Systems Organization (CSCI-UA 201). Proficiency in programming languages such as Java is expected.
We will provide self-contained class notes for the materials covered in the course. It is therefore not necessary that you purchase additional text books. Nevertheless, we recommend the following books for additional reading.
You can find the syllabus and class notes on the course's Brightspace page.
We are using Ed Discussion for class Q&A.
Homework (30%), midterm exam (30%), final exam (40%).
Late submissions of homework solutions will be graded with a 10% penalty per day of late submission. Solutions will not be graded if
Please review the departmental academic integrity policy. In this course, you may discuss homework problems and assignments with other students, but the work you turn in must be your own. Do not copy another student's work. Also, you should consult the instructor before using materials or code other than that provided in class. Copying code or other work without giving appropriate acknowledgment is a serious offense with consequences ranging from no credit to potential expulsion.