CSCI 300, Programming Languages, Fall 2005 Syllabus

Time:MWF: 12:30 - 1:20 pm
Place:Alter 223
Instructor: Gary Lewandowski
Office locationHinkle 129
Office Hours Monday 4:00 - 5:00Also by appointment; my schedule is online.
Tuesday 4:00 - 5:00
Wednesday 2:00 - 3:00
Thursday 4:00 - 5:00
Friday 2:00 - 3:00
Textbook:Concepts, Techniques, and Models of Computer Programming, Peter Van Roy and Seif Haridi.
GradingPlease read my statement on Academic Integrity to get insight into my grading philosophy. The Department of Mathematics and Computer Science has a grading standard that I follow. You should also read my statement on plus/minus grade modifiers.
40% Exams (3 exams, final is cumulative)
05% Computer Scientist Report
15% Language Research Paper
40% Homework
Late Policy This is a required course for your computer science degree and as such may require significant amounts of effort. I will not be giving extensions or incompletes for work during this semester unless you have an extreme emergency.

Because they help drive class discussion, homework and programming problems are due at the beginning of the class period on their due date.

Course Description (from course catalog)

History of programming languages; virtual machines; sequence control; data control; scoping; parameter passing; sharing and type checking; run-time storage management; programming language semantics; programming paradigms. Includes a brief introduction to several different languages as examples of paradigms.


In Languages and Automata we get to study whether or not problems are computable, and by what computing devices. In a sense, that course tears apart the notion of the existence of an algorithm by demonstrating when there is and isn't one. In Software Engineering, you pull apart the notion of the programming process by establishing defined methods for approaching the entire process.

This course tears apart the programming language aspect of computer science. It is easy to take a language for granted -- we ask you to program in it, so you have to learn it. The point of this course is to start over and really notice the features of a programming language, revealing the depth of study that underlies the tool you've used so often.

The textbook is important to this course and I will expect you to complete regular readings from it (my guess is approximately 15 pages per class day).

Course Goals/Objectives

The student will be able to

  1. explain what the fundamental properties of programming languages are and discuss how the properties are implemented in particular languages.
  2. learn and use new languages on their own.
  3. discuss the pros and cons of using various languages to solve particular problems.
  4. recognize programming paradigms in a variety of languages including languages not previously studied.
  5. demonstrate some familiarity with languages from a variety of programming paradigms.

Computer Scientist Report

Unlike natural language, programming languages can be traced to particular people and philosophies. Much of what we may love or hate about programming comes from choices made by people thinking about programming models and how to express them.

Thus, it is my opinion that this is a proper course to take a step back and examine a few particular computer scientists. Just as we will often step back and think about why particular programming models exist, we should step back and ask why particular people are recognized as being excellent computer scientists. What qualities do they have and how does this reflect on the field.

Your report will begin with the sentence pattern: "X exhibits the following characteristics of a good computer scientist:" where X is the person you are researching. Then you must decide what those characteristics are and defend your statement that person X exhibits them. The historical details of person X may help defend your choice.

This need not be an extremely long paper as long as you make your points well and should be in html format. You will give a five minute presentation to the class summarizing your report.

I will try to let students choose their own topic for this report; it will be first-come-first-serve, so if there is someone you are interested in, let me know early. I will also put a list out as we go further into the semester.

Language Research Report

The culmination of your exploration of programming languages is a research project covering a language you have never before used. You will explore it, evaluating and analyzing it according to what we learn during the course (details will be provided during the semester). The project may be completed either alone or in pairs, with no assessment benefit or penalty either way. Each project will be presented in a 20 minute presentation to the class during the last week of the course.


Homework questions will vary from questions about the reading to pencil-paper exercises applying some theory from the text, to essay questions relating various languages, to small programming assignments related to concepts covered or new paradigms.

Questions I regard as important for class prep will generally be worth less so you don't need to stress about getting them correct, but there will enough of them that you will need to be giving effort on reading the text.

Non-class-prep questions will most likely be graded on a simple 4 point scale corresponding to correctness, with 4 indicating completely flawless.

Tentative Course Schedule

Well, we'll do the best we can, won't we?
DatesWhere we'll be in the text
24 Aug - 26 AugChapter 1
29 Aug - 9 SepChapter 2
12 Sep - 28 SepChapter 3
30 SepGary in Seattle
3 OctChapter 4
5 OctExam 1, Chapters 1-3
7 OctFall Break
10 Oct - 21 OctChapter 4
24 Oct - 25 OctChapter 5
31 Oct - 2 NovChapter 6
4 NovExam 2, Chapters 4-5
7 Nov - 11 NovChapter 6
14 Nov - 23 NovChapter 7
25 NovThanksgiving Break
28 Nov - 2 DecChapter 8
5 Dec - 9 DecLanguage Research Presentations
12 DecFinal Exam 1 - 2:50 pm

Gary Lewandowski
Last modified: Fri Aug 19 17:15:01 EDT 2005