|Time:||MWF: 12:30 - 1:20 pm|
|Office location||Hinkle 129|
|Textbook:||Concepts, Techniques, and Models of Computer Programming, Peter Van Roy and Seif Haridi.|
|Grading||Please 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|
|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.
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.
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).
The student will be able to
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.
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.
|Dates||Where we'll be in the text|
|24 Aug - 26 Aug||Chapter 1|
|29 Aug - 9 Sep||Chapter 2|
|12 Sep - 28 Sep||Chapter 3|
|30 Sep||Gary in Seattle|
|3 Oct||Chapter 4|
|5 Oct||Exam 1, Chapters 1-3|
|7 Oct||Fall Break|
|10 Oct - 21 Oct||Chapter 4|
|24 Oct - 25 Oct||Chapter 5|
|31 Oct - 2 Nov||Chapter 6|
|4 Nov||Exam 2, Chapters 4-5|
|7 Nov - 11 Nov||Chapter 6|
|14 Nov - 23 Nov||Chapter 7|
|25 Nov||Thanksgiving Break|
|28 Nov - 2 Dec||Chapter 8|
|5 Dec - 9 Dec||Language Research Presentations|
|12 Dec||Final Exam 1 - 2:50 pm|