Study Guide
Spring 2008
Introduction and Prerequisites
Required Textbooks
Communication
Grading
Assignments
This study guide provides the objectives, requirements, and
timetable for this course.
Contact Information.
This information is given on the top level student page.
Click here to go to this page.
This course is a core course in the computer science curriculum. In this
course you will learn about the different language paradigms that computer
scientists have developed to create solutions to various problem domains.
You'll learn about the features of programming languages and you'll learn
how languages are implemented. So the course ranges from the very abstract
to the very particular.
Students must have a solid background in programming in a language (which one
doesn't matter), must understand how computers work at a low level (as taught
in the Computer Organizations and Systems course), and must be able to
apply basic mathematical concepts (as taught in the Discrete Math course).
This course will, as you might expect, entail a lot of programming, much of
it in languages that you probably have not heard of before. You will also
be expected to master quite a bit of theoretical material and to apply this
material to solve language problems such as creating grammars.
Back to top
Concepts of Programming Languages, 8th ed. Robert W. Sebesta, Addison
Wesley, 2007.
This book provides the primary conceptual material for the
course. Lecture slides and problem sets will come from this book.
The Scheme Programming Language, 3rd ed. R. Kent Dybvig, MIT Press,
2003. This book describes the Scheme programming language in great detail.
Much of your programming in this course will be in Scheme and many of the
problem sets that you will solve in the first part of the course will come
from this book.
Back to top
- Class lectures will not exactly follow the texts. You are expected to
attend all classes and attendence will be taken.
- You are accountable for all material covered, all announcements made,
and all handouts given out during class.
- Ways to reach me:
- Come during office hours!!!
- Send electronic mail to
barr@ithaca.edu
- Leave a note (including your name, schedule, phone number and
userid) either under my door or in the Math/Computer Science Department
Office 2nd floor Williams.
Back to top
Grading will be based on the following events. Note that half of your
grade comes from the exams. Thus, if you score perfectly on assignments
and projects and have a 70% average on the exams, you will receive a "B"
for the course.
| Assignments (all kinds) |
30%. |
| Exams (3 exams) |
35%. |
| Language Review Project |
15%. |
| Other Projects |
15%. |
|
Class Attendence and Participation |
5%. |
There will be two midterm exams and a final.
The first exam will take place on Thursday, 28 February, at 6:30PM in a
room TBA. The second exam will take place on Thursday, 27 March,
at 6:30PM in a room TBA.
The final project presentation will take place on Friday, May 2 in class. The
final will take place in Williams 309 on Friday, 9 May, 1:30PM - 4PM.
Back to top
- This is an upper level computer science course. I assume that you know
how to design and create software and debug programs. Thus, I will not debug
your programs for you. You may ask conceptual or theoretical questions, but you
are responsible for making your programs run.
- Class attendance is mandatory. You are responsible for all material
and announcements given in class. If you miss a class you are responsible
for obtaining the missed material/announcements. 4 unexcused absences will
lower your grade by one half of letter, e.g., an A becomes an A-. If
you miss more than 8 classes I will withdraw you from the course. Note
that verifiable health issues or family emergencies, religious holidays,
court appearances, and most College-authorized cocurricular and extracurricular
activities such as athletic events, musical and theatrical performances, and
professional conferences are considered excused absences.
- I will take 2 points off of your
final point total for every class missed. The first two misses are free.
- All assignments must be turned in within 2 days of the due date. Your
assignment will be docked 25% if it is a day late and 50% if it is two days
late. You may not turn in an assignment any later that 2 days late.
Always turn in whatever work is done at the due
time. You should have something FINISHED (i.e., functioning and
commented), even if the entire assignment isn't completed. Individual
exceptions should be discussed with me in advance.
- Assignments will be checked in class. You will be required to turn in
hard copies of all html, javaScript, Perl, CSS, etc. Every copy must have
your name and the assignment number at the top of the page in a comment.
- No make-up work is available.
If you miss assignments there is no way to make up the work.
- All assignments are expected to be INDIVIDUAL
work. All work handed in must be original. Duplicate or
very similar assignments receive negative grades. Flagrant cheating
(on an exam or project, or assignment) will result in (at
minimum) a FAILING GRADE for the course. General discussion is
allowed, but not sharing of answers, algorithms, or work.
- Some projects will be the exceptions to the above rule. These
will be completed in teams.
- SAVE your intermediate work
until an assignment has been graded,
returned, and recorded. KEEP backup copies of the final versions of your
assignments and projects. KEEP copies of returned work (I may make a mistake
in recording the grade).
- Graded assignments will be returned in class. Work unclaimed in
class may be picked up later from outside my office. If you have a
question on a grade, bring it to my attention within one week of the
assignment's return.
- Periodically, I will post grades as we have them
recorded. It is your responsibility to check these listings to ensure
their correctness, within one week of the posting.
- Handwritten assignments should be neat and easy to read (Or else type
them!). Include your name and section number on every page and in every
stack. Your term project design statements must be typed.
- It is more productive to use the computer for entering, editing, and
running scripts, and then spend time AWAY from the machine debugging
a script.
- Don't get behind in this class! Start each assignment as soon as it
is handed out,
so that you have time to ask questions and can use your time wisely.
Back to top