COSC 3410 Programming Languages

Course Syllabus: Lectures
Office Hours
Textbooks
Outcomes
Grading Policy
Schedule
Course Instructor: Dennis Brylow
Email: brylow at mscs dot mu dot edu
Office: Cudahy 380
Lectures
MWF 12:00pm - 12:50pm, Cudahy 114
Office Hours
Mon/Wed 3:00pm - 4:00pm
Mon 7:00pm - 8:00pm
Fri 11:00am - 12:00pm
MSCS Department Logo

Textbooks

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 few 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, at best, a terse 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 the dense verbiage contained therein. 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:
  • Think competently in the functional programming paradigm;
  • Express how the functional paradigm compares and contrasts with the other major programming paradigms, particularly the more commonly used imperative paradigm;
  • Appreciate the power and limitations of modern programming languages, and understand how language choice impacts implementation issues;
  • Understand the major components of a computer language interpreter;
  • Work together effectively in teams on a substantial software implementation project.
  • Course Policies

    Grades will be calculated using the following formula:
    Homework 60%
    Pop (Reading) Quizzes 5%
    Exam #1 10%
    Exam #2 10%
    Exam #3 15%
  • Students must pass BOTH the exam portion of the grade AND and homework assignment portion of the grade to pass the course overall.
  • Assignments are to be completed individually, except when specifically noted otherwise. You may discuss course topics with your collegues, but written work and programmed code is not to be shared.
  • Academic dishonesty (claiming another person's work as your own) will not be tolerated. Infractions will result in immediate failure of the course, and referral to the Dean's office, in accordance with Marquette's University-wide Academic Honesty Policy.
  • If you are not certain what constitutes fair play and what will be considered academic dishonesty, please ask the instructor.
  • Homework will consist of substantial design and implementation projects, often with a week or more lead time. Students who wait until a few days before the deadline to begin the homework will typically not succeed.
  • Late work will not normally be accepted for grading. Students are expected to observe deadlines and follow submission instructions precisely.
  • Although formal attendance will not be taken, it is expected that students will attend all scheduled sessions. Excessive absences (which would be obvious from missing in-class pop quizzes, for example,) will result in withdrawal from the course, per Marquette's University-wide Attendance Policy.
  • Schedule

    Week Topics Readings Demos Assignments
    01 Introduction, Scheme TLS Ch 1,2,3 HW #1 - Scheme
    02 Scheme TLS Ch 4,5 Church.scm HW #2 - More Scheme
    03 More Scheme TLS Ch 6,7,8 Member.scm, Member.java
    Tree.scm
    HW #3 - Even More Scheme
    04 Even More Scheme TLS Ch 9,10 HW #4 - Variable Binding
    05 Data Abstraction, Induction EOPL Ch 1, 2 HW #5 - Simple Interpreter
    06 Interpreters EOPL 3.1 Exam #1
    07 Front End, Conditionals EOPL 3.2, 3.3 ParserGen.scm HW #6 - Conditionals
    08 Local Binding
    Midterm Break
    EOPL 3.3, 3.4 Break
    09 Procedures, Recursion
    Midterm Grades
    EOPL 3.5, 3.6 HW #7 - Binding and Closures
    10 Variable Assignment EOPL 3.7 HW #8 - Recursion
    11 Types, Type Checking EOPL 4.1, 4.2 HW #9 - Statements and Assignment
    12 Abstraction Boundaries
    Drop Day
    EOPL 4.3 Exam #2
    HW #10 - Type Checker
    13 Type Inference
    Thanksgiving Break
    EOPL 4.4 Break
    14 Objects EOPL Ch 5 HW #11 - Objects
    15 History of Programming Langauges HW #12 - History of Programming Languages
    The instructor reserves the right to adjust this schedule as necessary.

    Back
    [Revised 2011 Aug 29 11:11 DWB]