COSC 152 Programming Languages
Course Instructor:
Dennis Brylow
Email: brylow at mscs dot mu dot edu
Office: Cudahy 380
MWF 12:00PM - 12:50PM, Straz 365
Mon/Wed 3:00PM - 4:00PM
Mon 7:00PM - 8:00PM
Fri 11:00AM - 12:00PM
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.
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.
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.
If you are not certain what constitutes fair play and what will
be considered academic dishonesty, please ask the instructor.
Week |
Topics |
Readings |
Demos |
Assignments |
01 |
Introduction, Scheme |
TLS Ch 1,2 |
|
02 |
Scheme |
TLS Ch 3 |
Lec4.scm |
|
03 |
More Scheme |
TLS Ch 4,5 |
Lec5.scm
Lec5.java
Tree.scm |
HW #1 - Scheme |
04 |
Even More Scheme |
TLS Ch 6,7 |
define-datatype |
HW #2 - More Scheme |
05 |
Data Abstraction, Induction |
EOPL Ch 1, 2 |
|
HW #3 - Environments |
06 |
Interpreters |
EOPL 3.1 |
LexAddr.scm |
Exam #1 |
07 |
Front End |
EOPL 3.2, 3.3 |
LexAddr2.scm,
ParserGen.scm |
HW #4 - Simple Interpreter |
08 |
Conditionals, Local Binding
Midterm Break |
EOPL 3.3, 3.4 |
|
HW #5 - Conditionals |
09 |
Procedures, Recursion
Midterm Grades |
EOPL 3.5, 3.6 |
|
HW #6 - Binding and Closures |
10 |
Variable Assignment |
EOPL 3.7 |
|
HW #7 - Recursion |
11 |
Types, Type Checking |
EOPL 4.1, 4.2 |
|
Exam #2 |
12 |
Abstraction Boundaries
Drop Day |
EOPL 4.3 |
|
HW #8 - Statements and Assignment |
13 |
Type Inference
Thanksgiving Break |
EOPL 4.4 |
|
HW #9 - Type Checker |
14 |
Objects |
EOPL Ch 5 |
|
HW #10 - Objects |
15 |
History of Programming Langauges |
|
|
HW #11 - Presentation on Programming Language |
The instructor reserves the right to adjust this schedule as necessary.
Back
[Revised 2007 Aug 27 11:11 DWB]