CSCI 340, Spring 2003

Organization of programming languages

www.cburch.com/csbsju/cs/340/
Instructor: Carl Burch
Office: Peter Engel Science Center 205
Office hours: Days 1, 5: 1:30-2:30; Day 3: 8:30-9:30
drop-ins and appointments welcome any time

Overview

This course discusses the concepts underlying programming languages. For three major programming language paradigms --- procedural, object-oriented, functional --- we'll examine correctness, compilation, and other issues surrounding the paradigm. We will look at specific languages so that the discussion will be concrete, but our goal is to understand the concepts underlying the languages, not language specifics.

Schedule

This class will be very Thursday-intensive. Every time class meets on a Friday (except the first), an assignment is due. Every time class meets on a Thursday, a test will occur.

Thu 23 Jan Quiz 0
Fri 31 Jan Project 0 due Thu 6 Feb Quiz 1
Fri 14 Feb Project 1 due Thu 20 Feb Quiz 2
Fri 28 Feb Project 2 due Thu 13 Mar Midterm
Fri 21 Mar Project 3 due Thu 27 Mar Quiz 3
Fri 4 Apr Project 4 due Thu 10 Apr Quiz 4
Fri 25 Apr Project 5 due Thu 1 May Evaluations
Thu 8 May Final (11am)
Not represented on this schedule are seven shorter assignments.

Books

There are three parts to this class (but not equal parts), and the plan is different for each part.

If you want a traditional textbook, I can recommend Tucker and Noonan's book, Programming Language: Principles and Paradigms (McGraw Hill). CSB/SJU used this last spring, so there may be copies floating around that you could borrow or buy.

Evaluation

There are a total of 1,000 points over the semester.

Class participation 40 pts
Projects (60 pts each) 360 pts
Assignments (25 pts each) 175 pts
Quizzes (30 pts each) 150 pts
Midterm 125 pts
Final 150 pts
Total 1,000 pts
Letter grades will come from the following scale.
A 900 or more C 700 to 779
AB 880 to 899 CD 680 to 699
B 800 to 879 D 600 to 679
BC 780 to 799 F less than 600
The instructor reserves the right to make adjustments in the entire grading scheme or in particular cases.

The A grade is meant for outstanding performance; a B is more typical and represents solid preparation for future computer science courses, while a C represents marginal preparation. I assign grades independent of any overall goal, but the average letter grade will likely be near 3.0, the historical average over CSB/SJU computer science classes.

Class participation

Forty points are designated for ``class participation.'' Twenty of these will be based on attendance, the other twenty on a subjective judgement of active participation, evidence of which would include your questions (during and outside scheduled class time), good use of scheduled laboratory time, and participation in classroom problem solving. I will assign half of these points near the semester's middle, and the final half near the semester's end.

Take this as an invitation: I value your active participation in class, and I expect you to be fully tuned in during classroom and laboratory sessions.

Projects and assignments

Projects and assignments are a major component of this course. They will be long, and the deadlines are firm. Start as early as possible to allow yourself the opportunity to recover from computer and personal problems. My expectation is that you'll find them so exciting that you'll begin working on them as soon as class ends!

Projects and assignments are due at 11:20am on the announced due dates. You lose 10 points for each day that elapses thereafter, whether or not it is a workday, until the following class period, at which time no more assignments are accepted.

If your bring your assigment after class has begun, you have incurred the late penalty. I will be happy to accept papers handed to me or slid under my office door by 8am on the due date.

Tests

There are five quizzes, a midterm, and a final in this course. Quizzes will typically be 25~minutes in length; the midterm and final will both extend for the full class period.

On these tests, it will be common for the average test grade to be 75%. When the median grade on a test falls below this, the scores on that test will be increased so that the median is 75%. (Note that, because I use the median, the top score does not ``blow the curve.'')

If you miss a test, you must receive advance permission to receive more than a 0. (Naturally dire medical emergencies usually constitute an exception.) I will either double your lowest quiz or exam score or administer a make-up, at my discretion. Notify me well in advance --- 24 hours for exams and quizzes, and two weeks for the final. Do not skip a test without my prior approval!

Note that I may require you to document your reason for absence. Travel arrangements and work schedules are not adequate reasons to miss a test.

Plagiarism / cheating

You must properly attribute any work or ideas you use in assignments for this course which are quoted or derived from others. Plagiarism includes not only copying the ideas and the written and spoken words of others, but also copying or otherwise appropriating their computer files as well. Interfering with the work of others including their use of computing facilities is also a serious academic offense. I will report all instances of plagiarism, cheating, or other academic misconduct to the appropriate Academic Dean, and I will give an F for that assignment or for the course at my discretion.

While I encourage you to discuss class material with your classmates, you may not discuss the specifics of a project or assignment solution. (Groupwork specifically allowed by the assignment is an exception to this rule.) A strong correlation between your solution and a classmate's solution constitutes evidence of cheating.

Conclusion

Programming languages are an important foundation of computing; thus, as we examine programming languages, their foundations, and their relationship to the rest of computer science, you will find this course wide-ranging, challenging, and (I hope) interesting.

I look forward to working with you this semester!