COSC 3410 Programming Languages

Course Syllabus: Lectures
Office Hours
Grading Policy
Course Instructor: Dennis Brylow
Email: brylow at mscs dot mu dot edu
Office: Cudahy 380
TR 2:00pm - 3:15pm, Cudahy 120
Office Hours
Tue/Thu Noon-1pm
Mon 9:00pm - 10:00pm
Fri 9:00am - 10:00am
MSCS Department Logo


EOPL Textbook Cover
Essentials of Programming Languages.
Third Edition.
Daniel P. Friedman,
Mitchell Wand.
MIT Press.
TLS Textbook Cover
The Little Schemer.
Fourth Edition.
Daniel P. Friedman
and Matthias Felleisen.
MIT Press.
We will make our way quickly through all of The Little Schemer during the first two weeks. It is a quick read, and an excellent introduction to both functional programming style and the Scheme dialect for beginners.
Essentials of Programming Languages is a challenging book. I have chosen it because the interpreter project at the core of this book is first class (no pun intended,) and I know that together we can make our way through it. A graduate-level course would cover the entire text; we will cover chapter 1-4, 7, and 9. I will assign many of the problems contained in EOPL, and others may make excellent exam questions.

Course Outcomes

Upon completing this course, students will be able to:

Course Policies

Grades will be calculated using the following formula:
Homework 60%
Reading Quizzes 5%
Exam #1 10%
Exam #2 10%
Exam #3 15%


Student attendance will not be explicitly tracked in this course, and will not directly impact student grades. However, students who routinely miss class discussions or lectures should expect to be unprepared to complete the assignments and exams upon which grades so heavily depend. In short, I don't bother with attendance bean-counting because students who cut class usually fail themselves out of the course before I would need to take any action. Make good decisions.

If you know you will be missing class for a legitimate reason, I appreciate a heads-up, but in accordance with Marquette University Attendance Policies, I neither require nor accept documented excuses. Please have a peer in the class take notes in your absence, and get any assignments in ahead of the deadline.

The size and structure of this course will not normally allow me to accept late work under any circumstances. There are enough opportunities for points in the course for most students to miss a few without severe consequences for their grades.

Academic Integrity

All students are expected to abide by Marquette University's Policy on Academic Integrity, and we will proceed under the assumption that everyone has committed themselves to the University's Honor Pledge:

I recognize the importance of personal integrity in all aspects of life and work. I commit myself to truthfulness, honor, and responsibility, by which I earn the respect of others. I support the development of good character, and commit myself to uphold the highest standards of academic integrity as an important aspect of personal integrity. My commitment obliges me to conduct myself according to the Marquette University Honor Code.

The Honor Code has particular implications for computer scientists and engineers, as well as computing professors, whose course work is so readily duplicated and shared in our modern digital world.

For my part, I will strive to ensure that your assignments and exams are engaging, challenging, and worth your investment in time and energy. For your part, I expect you will work hard, strive to learn, and present your work with honesty and integrity.

There will be many opportunities for you to collaborate with your peers in this course, and I strongly encourage you both to seek help when you are stuck, and to share your knowledge with your peers when you have achieved understanding. Problems will only occur if you falsely claim work as your own when it is not, or collaborate when an exam or assignment has been specified to be individual work.

In the unlikely event of an academic integrity violation in this course, Marquette University's Procedures For Incidents of Academic Dishonesty will be closely followed.


Week Topics Readings Demos Assignments
01 Scheme, grammars, inference TLS Ch 1-6, EoPL Ch 1   HW #1 - Scheme
02 Environments, ADTs TLS Ch 7-10, EoPL 2-2.4   HW #2 - Data Structures
03 λ-Calculus, Parsing EoPL 2.5   HW #3 - λ-Calculator
04 Interpreters, Binding EoPL 3-3.2   HW #4 - μLET
05 Parser Generators EoPL Appendix B   Exam #1
06 Closures, Recursion EoPL 3.3-3.4   HW #5 - μλ
07 Scoping, S-Expressions EoPL 3.5-3.7   HW #6 - μREC
08 Side Effects, Statements
Midterm Break
EoPL 4-4.3   HW #7 - μ;
09 Mutation, Parameter Passing
Midterm Grades
EoPL 4.4-4.5   HW #8 - μ
10 Type Systems EoPL 7-7.3   Exam #2
11 Objects and Classes EoPL 9-9.4   HW #9 - μOO
12 Inheritance and Types
Drop Day
EoPL 9.5-9.6   HW #10 - History of Programming Languages
13 History of Programming Languages
Thanksgiving Break
Various   Break
14 Other Languages Various  
15 Review      
16 Final Exams     Exam #3
The instructor reserves the right to adjust this schedule as necessary.

[Revised 2016 Aug 30 11:04 DWB]