3-0-3. Prerequisites: CS 2360, CS 2390, and CS 2430.
A study of the history, conceptual basis, and fundamental constructs of high-level programming languages and models.This a 3000-level course, Programming Language Concepts is offered primarily as a core requirement for undergraduates majoring in Computer Science. Other students with appropriate backgrounds in programming languages (described below) are welcomed.
Programming languages have been an important area of study in computer science for many years. Although most programming is done in a relatively small number of languages, many very important software development concepts and other key ideas in computer science have been incorporated into programming languages over the last 30 years. The primary goal of this course is to enable you to develop a well-organized conceptual understanding of programming languages, building on your prior concrete experience with several diverse languages.
You are expected to have a copy of the text and read all assigned material. Any changes in the readings listed below will be announced in class.
Following is an approximate lecture schedule; changes are quite possible, depending on how talkative I am about various topics and how inquisitive you are. (Please ask lots of questions -- it's much more fun than me just standing there talking!)
Lecture Schedule:
| Class Date | Topic | Readings |
| Jan 7 | Introduction -- studying programming languages | Chapter 1 |
| Jan 9 | History of programming languages | Chapter 2 |
| Jan 12 | More history; Language design issues | Chapter 2 |
| Jan 14 | Translation: specifying and analyzing syntax | Chapter 3 |
| Jan 16 | Translation: specifying and analyzing syntax | Chapter 3 |
| Jan 19 | Holiday -- no class | |
| Jan 21 | Translation: specifying and implementing semantics | Chapter 3 |
| Jan 23 | Logic programming | handout |
| Jan 26 | Logic programming in Prolog | Chapter 14 |
| Jan 28 | Logic programming in Prolog | |
| Jan 30 | Type concepts; elementary data types and variables | Chapter 4.1-2 |
| Feb 2 | Midterm Exam | |
| Feb 4 | Structured data types | Chapter 4.3 |
| Feb 6 | Abstract data types snd storage management | Chapter 5 |
| Feb 9 | Abstract data types snd storage management | Chapter 5 |
| Feb 11 | Expressions and sequence control | Chapter 6 |
| Feb 13 | Expressions and sequence control | Chapter 6 |
| Feb 16 | Subprograms, parameters, and their implementation | Chapter 7 |
| Feb 18 | Subprograms, parameters, and their implementation | Chapter 7 |
| Feb 20 | C++ | |
| Feb 23 | C++ | |
| Feb 25 | C++ | |
| Feb 27 | C++ | |
| Mar 2 | C++ | |
| Mar 4 | Java | |
| Mar 6 | Exception handling | Chapter 9.1 |
| Mar 9 | Concurrency and parallel programming | Chapter 9.2 |
| Mar 11 | ||
| Mar 13Ý | Review |
Programs are to be turned in electronically (details to be provided
later). To be on time, the electronic submission must be done by 11:59pm
of the due date. Programs will be accepted up to three days late, with
a penalty of 10 points for each day. On-time submissions are strongly encouraged,
but getting the programs working is obviously important.
In addition to the programs, there will be five written homework assignments.
They will involve questions pertinent to material covered in class and
in the readings. They will be assigned in class a due at the beginning
of class on their due dates. Each will be worth 5% of your grade.
| Component |
|
|
|
|
|
|
| Two programs |
|
|
| Midterm exam |
|
|
| Final exam |
|
|
* Graduating seniors will have an additional homework assignment due during the last week of class that may result in modification of the grade computed by the formula given above.
Finally, incompletes will be given only in truly exceptionål circumst`nces, not simply beåause you h`ve not managed to geå the work `one.