| Instructor: | Stephen Edwards |
| Office: | 641 McBryde Hall |
| Office Hours: | Tuesday
9:30-10:30 am Friday 1:00-2:00 pm Wednesday, on-line, 8:00-9:00 pm |
| Office Phone: | 231-5723 |
| E-Mail: | edwards@cs.vt.edu |
| GTA: | Ryan Richardson |
| E-Mail: | wiricha2@vt.edu |
| Office Hours: | TBA |
| Prerequisite: | CS 2604 and programming experience |
| Text: |
Concepts of Programming Languages, 4th Ed., Robert W. Sebesta, Addison-Wesley, 1999. |
| Web Information: | http://ei.cs.vt.edu/~cs3304 |
| Final Exam: | Wednesday, Dec 15, 2:05 pm-4:05 pm |
This course provides an in-depth study of current and historical issues in the design, implementation, and application of programming languages. Topics will vary from basic to advanced in areas such as syntax, semantics, binding, data abstraction, exception handling, concurrency, and functional, logic and object-oriented programming. Some programming will be required to help you get the feel for different types of languages. In particular, you will be expected to develop programs in two new paradigms with which you may not be familiar.
Among the primary goals of this course are (1) to give you the background to be able to evaluate the appropriateness of a programming language to an application, (2) exposure to different types of languages, and (3) to get you to the point where learning a new programming language is not an effort to be feared.
| Activity | Number of points |
|---|---|
| Programming Assignments | 30 % |
| Homework Assignments | 35 % |
| Midterm | 15 % |
| Final Exam | 20 % |
| Total | 100 % |
Because you are expected to learn new programming languages outside of class, I encourage student interaction regarding the understanding of a programming language and the system under which it operates, so long as there is no direct help in completing an assignment. If you want to form groups in order to help each other learn a language, I have no objection.
| Week | Topic(s) | Chapter |
|---|---|---|
| 1 | Introduction and History | Chapters 1 & 2 |
| 2 | Syntax and Semantics | Chapter 3 |
| 3 | Names and Typing | Chapter 4 |
| 4 | Data Types | Chapter 5 |
| 5 | Expressions and Assignment | Chapter 6 |
| 6 | Control Structures | Chapter 7 |
| 7-8 | Subprograms | Chapter 8 |
| 9 | Implementing Subprograms | Chapter 9 |
| 10 | Abstract Data Types (ADTs) | Chapter 10 |
| 11 | Object-Oriented Programming | Chapter 11 |
| 12 | Concurrency and Exception Handling | Chapter 12 & 13 |
| 13 | Functional Programming | Chapter 14 |
| 14 | Logic Programming | Chapter 15 |