COS 301 Programming Languages
Fall 2009 204 Neville 11:00 am to 12:15 pm TT
Instructor: Office Hours: 10:00am - 10:45am TT
Curtis Meadow Or immediately after class
230 Neville Hall Or by appointment
E-Mail: curtis.meadow@umit.maine.edu (First Class)
Text: Programming Languges Principles and Paradigms (2nd ed.). Allen Tucker and Robert Noonan, McGraw Hill, 2007. ISBN 0–07–286609-8.
Course Description:
Formal description of programming languages including specification of syntax and semantics. Discussion of infix, prefix, and postfix notation with translation techniques. Topics include branching, grouping of statements, storage allocation, list and string processing, relation of language design to efficiency. Satisfies the General Education Writing Intensive Requirement. Prerequisites COS 226 and COS 250.
General Course Objectives:
Programming languages are a means for expressing problems and their solutions in a language that computers can "understand." However, programming languages are an artificial construct (a program that provides a virtual machine) that lies between the programmer and the real machine. The central goal of this course is to understand what a programming language really is and "how it works." Other goals:
● To improve your understanding of the programming languages that you already know
● To increase your understanding of useful programming constructs
● To gain some understanding of how to select a particular language for solving a particular problem
● To make it easier to learn a new language
● To understand the major language paradigms
● To grasp the fundamental equivalence of all programming languages
● To improve your professional written communication skills
Exams: Two prelims and a final exam. The final exam will be similar to the prelims in length and content. Exams will have a mix of short answer and short essay questions. Essay questions will be graded on both content and writing quality. Be prepared to answer questions that ask you to take a position or make arguments for or against a position. Such questions do not have a "correct" answer. Electronic devices are not allowed for exams; including but not limited to laptop computers, calculators, telephones and music players.
Course Project: The course project is a significant part of the course. In broad terms, the project will involve picking a programming language that you do not know, and writing 4-5 papers during the semester, each comparing and contrasting a particular programming language issue between your chosen language and another language that you know well. Grades are based on both content and writing style. A separate document will describe project policy and format.
Project papers will receive 2 grades: the first for the initial submission, and the second for the final submission after rewriting. The recorded grade for each paper is the average of the two grades. Grading criteria for papers includes writing competency as well as quality of content. Papers must be submitted in both printed and electronic format in order to check for plagiarism. As the class progresses, we will discuss a grading scheme for the course project. Many of you will receive low grades for early papers but if so it is expected that you will show significant improvement over the course of the semester.
Presentation Option. Presentations combine written and oral communcations skills. In lieu of one paper assignment, you can do an in-class presentation on any language or language topic. It does not have to be one of your project languages. Contact me for topic approval.
Homework Assignments. Homework assignments will include short answer questions, problems and possibly exercises from the textbook, the goal being to learn concepts and algorithms that might appear on an exam.
Classroom Participation. Many computer science courses are somewhat "cut and dried" in that you are studying standard and well-known algorithms and design principles. In this class we will be examining language design goals and principles, but almost any goal involves a tradeoff of one desirable feature over another. For example, languages designed for optimal execution efficiency often sacrifice type-safety to achieve this goal. This means that there is considerable room for opinion and discussion. The quality of the class can greatly enhanced if students participate in discussions.
Grading: Plus/minus grading will be used for final submitted grades. Letter/numeric grade equivalences will be announced as the semester progresses. Final grades are a weighted average:
Project |
40% |
Attendance and class participation |
5% |
Homework |
10% |
Exams |
15% each |
Exams are graded on a 0-100 scale. Other work is graded on a scale of 0-10 (in increments of 0.25) as follows:
0 Not submitted
1-3 Attempt made in spite of complete lack of understanding or knowledge
4-5 Incomplete or sloppy work; indicates substantial deficiency of understanding and/or very poor writing quality
6 Incomplete or sloppy work; incorrect logic or answers, indicating partial understanding and/or below average writing quality
7-8 Work is mostly correct, indicating a reasonable understanding of material; writing quality is acceptable
9 Work is correct and above average, indicating complete understanding and/or extra effort and/or excellent writing quality
10 Exceptional work
Academic Honesty
As a student in the university community, it is important that you understand the University of Maine policy on academic integrity. Violations of student academic integrity include any actions that attempt to promote or enhance the academic standing of any student by dishonest means (ex. cheating, plagiarism, fabrication or academic misconduct). Instances of academic dishonesty will incur a minimum penalty of a 0 for the assignment or exam in question. Additional penalties range from a failing grade for the course to referral to a University disciplinary body. While the internet is an excellent resource for this class, you must be very careful not to copy or plagiarize material found on the internet.
This policy is not meant to discourage legitimate and useful collaboration, or use of the Internet, in learning the material. It is often helpful to discuss problems and concepts with other students. However, ultimately you are responsible for your own work. If you feel that ideas or reasoning involved in part of an assignment are attributable to another student or source, you should note this fact in the assignment without fear of penalty. If you are unsure where the line is between doing your own work and plagiarism, please see me.
Classroom Behavior
Please arrive on time, be reasonably quiet, and do not leave the classroom before the period is over. Cellphones must be turned off while in class. I prefer that you do not use laptop computers during class except if useful for looking up material during a classroom discussion.
Website / First Class Conference
The website for this class is http://umcs.maine.edu/~cmeadow/courses/cos301/index.html. A First Class conference has been set up for this course. See Student Resources > Academics > Fall Courses > COS 301(Meadow). Nost lecture notes, handouts, assignments, corrections and other course materials will be posted on both the website and the first class conference. All students will be granted contributor permissions and you are welcome to use the conference to post questions and start discussions related to the class. I do not plan to distribute items on paper in class; please monitor the website and/or conference on a regular basis, especially just before class meetings.
ADA Notice: If you wish to request an accommodation for a disability, please contact me or Anne Smith, Coordinator of Services for Students with Disabilities (East Annex, 581–2319) as early as possible.
H1N1 Notice: In the event of disruption of normal classroom activities due to an H1N1 swine flu outbreak, the format for this course may be modified to enable completion of the course. In that event,
you will be provided an addendum to this syllabus that will supersede this version.
Attendance Policy
1. Attendance will be taken in class. Regular attendance is expected. Full credit for attendance will be given to students with no more than two unexcused absences.
2. Students with a significant number of unexcused absences may be asked to withdraw from the course.
3. You are responsible for any material missed whether an absence is excused or not.
4. Make-up exams will generally not be given. At the instructor's discretion, a missed exam may be given a grade of 0 or weights of other exams may be adjusted.
Resources
The internet has many excellent resources for the study of programming languages. The four sites listed below are from the Google directory and Wikipedia.
Google Directory: Comparison of programming languages
http://www.google.com/Top/Computers/Programming/Languages/Comparison_and_Review/
Google Directory: Programming languages
http://www.google.com/Top/Computers/Programming/Languages/
Wikipedia: List of programming languages
http://en.wikipedia.org/wiki/List_of_programming_languages
Wikipedia: Comparison of programming languages
http://en.wikipedia.org/wiki/Comparison_of_programming_languages
A brief note on Wikipedia: the articles vary greatly in quality and in general should not be considered authoritative sources. While the quality of the computer-related articles tends to be somewhat higher than the average article, you should use this site primarily as a secondary source and a search tool to help you locate primary sources. Review of the editorial discussions accompanying articles gives a good idea why many articles should not be considered authoritative.
Writing Resources
The Writing Center in 402 Neville is an excellent resource, with useful online materials and personal tutoring with your writing. See http://www.umaine.edu/wcenter/index.html for more information.
Course Outline
Tentative plans are to cover the following material from the text:
Ch. 1 Overview
Ch. 2 Syntax
Ch. 3 Lexical and Syntactic Analysis
Ch. 4 Names
Ch. 5 Types
Ch. 7 Semantics
Ch. 9 Functions
Ch.11 Memory Management
Ch.12 Imperative Programming
Ch. 13 Object-Oriented Programming
Ch.14 Functional Programming
Ch.15 Logic Programming
This is an ambitious schedule for an undergraduate course and is subject to change as the semester progresses. If time permits we may cover Event-Driven Programming and/or Concurrency as well.
Exam Dates:
Prelim 1 |
Thursday Oct 8 |
Prelim 2 |
Friday, Oct 31 |
Prelim 3 |
Monday Nov 24 |
Final Exam |
Weds Dec 17 12:15 PM (subject to change) |
Other Notable Dates:
Tues Oct 6 |
No class (fall break) |
Thurs Nov 5 |
End of 2nd third of semester for withdrawals |
Thurs Nov 26 |
No Class (Thanksgiving break) |