EECS 490 Fall 2017

In Fall 2017, I will be teaching EECS 490: Programming Languages. This is the second offering of this iteration of the course. The materials from Fall 2016 are available to members of the UM community here, and the Fall 2017 materials will be located here. A tentative schedule and syllabus are available at the Fall 2017 link.

The following are answers to some of the common questions I've received from students.

Q: What is the course about? Is the purpose to learn multiple programming languages?
A: The purpose of the course is to cover the fundamental concepts in programming languages. The goal isn't to learn a bunch of different languages, but rather to learn the concepts that will allow you to learn a new language quickly and to make better use of the programming constructs that are provided by a programming language.

Q: What topics will be covered in the course?
A: The official course description is as follows:

Fundamental concepts in programming languages. Course covers different programming languages including functional, imperative, object-oriented, and logic programming languages; different programming language features for naming, control flow, memory management, concurrency, and modularity; as well as methodologies, techniques, and tools for writing correct and maintainable programs.
Additional topics that will be covered include lexical and syntactic structure, type systems, semantics, lambda calculus, and metaprogramming. More details can be found in the tentative schedule of topics.

Q: What languages will be used in the course?
A: We will write code in Scheme, Python, Prolog, Java, and C++. We will talk about other languages but likely not write code in them.

Q: The enrollment capacity is listed as 50. Is this a hard limit?
A: We are planning for an enrollment in the range of 50-60 students. This is an expansion from the last offering. We are still refining many of the course materials, so we cannot support more students at this time.

Q: How will the waitlist be handled? If I will be a junior in the Fall, will it be possible for me to get in the class?
A: We are planning to reserve 10 seats for students who do not have senior standing, and we will process the waitlist manually for this purpose. So if you are interested in the course, make sure to add yourself to the waitlist even if you have a later registration appointment and the waitlist is long.

Q: I really want to get in the course. Is there anything I can do to increase my chances?
A: I'm glad you're interested in the course! However, to be fair to everyone, we cannot give anyone preference in registration. The reserved seats mentioned above will also be handled on a first-come first-serve basis for students in that category. Your best bet is to add yourself to the waitlist and wait. In the past, we found that several students dropped the course in the first two weeks, so there is a chance that a seat will open up and you will be able to get in.

Q: Will the course be taught in Winter 2018?
A: The course is not scheduled to be taught in Winter 2018. We do not anticipate this changing given the current resources of the department.

Q: What will be the workload of the course?
A: Most students reported the workload to be in the "moderate" range last year. We expect the workload to remain in this range.

Q: What will be the assignments for the course?
A: Our current plan is to have five homework assignments, 2 smaller programming projects, and 3 larger programming projects. There will be one midterm and a final exam.

Q: Are there any textbooks for the course?
A: We recommend the textbook Programming Languages: Principles and Paradigms, by Gabbrielli and Martini, and you can find it here. There will also be a set of course notes that cover the material, and the notes will be required reading.