A study of the syntax and semantics of a diverse set of high-level programming languages. The languages chosen are compared and contrasted in order to demonstrate general principles of programming language design. The course emphasizes the concepts underpinning modern languages rather than the mastery of particular language details. Programming projects will be required.
Instructor: Jessica D. Bayliss
Office: bldg. 70, room 2511
Email: my 3 initials @it.rit.edu
Web Page: http://www.it.rit.edu/~jdb
Office hours: Please see my main web page.
Asking questions via email seems to work best for many people.
4 hours per week
No required book. Optional books on specific programming languages will be recommended.
Course Web Page: http://www.it.rit.edu/~jdb/plc
I will distribute copies of other materials required for class. Information about reading and project assignments, exams, etc. will be linked from the course web page.
4003-263: Computer Science for Transfers -or-
4003-334: Computer Science 4 -and-
1016-265: Discrete Math I
These prerequisites will be enforced.
-
To
learn a framework for understanding the syntax of new languages.
-
To
have the ability to understand that some languages are better to solve a given
problem than others and to be able to state why when given a problem.
-
To
be able to write small Lisp programs using lambda, mapcar, and recursion
-
To
be able to write small programs in a scripting language.
-
To
be able to write small programs in a logical language.
-
To
understand why languages are constructed the way they are (choices have to be
made somewhere!).
-
To
know basic BNF and about the basic syntactical structure of a language.
-
To
have a basic grasp of tokenizing/parsing.
-
To
have a basic grasp of modern issues in language design.
- To be able to find information and learn about a language on your own.
Reading assignments will be given in class and may need to be completed by the next class time. Each written/coded homework assignment will be collected and graded. Written/coded homework assignments are posted at least 6 days before they are due and are due when stated in the assignment. The actual assignments will be available off of the course web page. For each day that a project is late I will remove 10% off whatever your grade on the project is up until 5 days past due. If you turn in your project more than 5 days late I will give you a 0 and will not look at the project. Please do not email me at the last minute before a due date. I am not on-line 24/7 and am very unlikely to answer your last minute questions.
In order to aid you in learning various languages, some
classes will be spent in a lab setting. Some of your attendance and participation
grade will come from these activities.
Two midterms lasting 50 minutes each will be given. While the midterm will be closed book and notes, you may bring one sheet of letter-sized paper with your own hand-written notes. Requirements and grading information for the poster will be available from the course web site. As part of the poster presentations you will also be required to write reviews of other student’s posters.
You will be required to present a poster on a
language of your choice (it may not be C/C++, Java, or any of the languages
concentrated on in this class). The poster must be done individually.
A cumulative final exam will be given. The exam is closed book and notes but you may bring one sheet of letter-sized paper with your own hand-written notes.
Exams cannot be made up except for real emergencies. If at all possible, you should contact me prior to the exam. Oversleeping, cars that don't start etc. do not constitute a valid excuse. If you lie to me or falsify documentation and I later find out about it, I will turn you in for academic dishonesty.
40% Projects
10% Homework (includes lab submissions)
10% Poster Presentation
5% Participation and attendance
20% Midterms
15% Final Exam
Numerical grades will be converted to letter grades according to the following scale:
> 90%: A; 80%-90%: B; 70%-80%: C; 60%-70%: D; < 60%: F.
Your final grade will never be more than one letter grade higher than your weighted average exam grade. In addition, if your weighted average exam grade is below 60%, you fail the course.
If you feel that an error was made in grading your project or exam, you have one week from the moment the graded work was handed back to dispute your grade.
The DCS Policy on Academic Dishonesty will be enforced.
You should only submit work that is completely your own. Failure to do so counts as academic dishonesty and so does being the source of such work. Submitting work that is in large part not completely your own work is a flagrant violation of basic ethical behavior and will be punished in accordance with the DCS Policy.