News

Course Overview and Goals

This course is designed to acquaint you with important concepts behind modern programming languages, including the object-oriented and functional paradigms. Ultimately after taking this course, you should be able to do the following:

We focus on concepts of programming language design and then use existing languages to illustrate the concepts. As the landscape and popularity of programming languages is ever changing, you will learn many skills that enable you to more easily learn and evaluate whatever programming languages you encounter during your career.

The course covers many aspects of using and understanding programming languages (e.g., syntax, scoping, data types, control structures, typing). A significant part is devoted to types (e.g., what they are, subtyping, inclusion and parametric polymorphism). We also look closely at important programming paradigms: object-oriented (using C++ and Java as example languages) and functional (using SML as an example language).

This course prepares you for introductory courses on both programming language implementation (e.g., CSCI 4555) and programming language semantics (e.g., CSCI 5535).

Prerequisites

The official prerequisites for this course are CSCI 2270 (Computer Science 2: Data Structures) and one of CSCI 2400 (Computer Systems) or ECEN 2120 (Computers as Components). These prerequisites are not necessarily absolute. Some prior programming experience is expected, ideally familiar with more than one programming language. If in doubt, please talk with the instructor.

Requirements

You will be responsible for the following:

Grading. Your overall grade will be determined using the ratio for class participation, homework assignments, midterm exams, and the final exam shown above. Letter-grade cutoffs will be announced after each exam to give you an idea where you stand.

Approximately 80% of the points on the exams and assignments will come from the identified skills. In other words, if you master all of these skills, you will get 80% of the points (likely to be in the B- to B+ range). The remaining points will be based on synthesis questions, that is, questions that combine multiple topics and are not necessarily tied to a single skill.

Regrades. Any request for reconsideration of any grading on coursework must be submitted within one week of when it is returned. Any coursework submitted for reconsideration may be regraded in its entirety, which could result in a lower score if warranted.

Late Assignment Policy. No late assignments will be accepted unless in the case of emergency (in which case appropriate documentation is expected). We all have things that come up in our lives, so you have one assignment grade that can be dropped. If you complete all assignments, the lowest grade will be dropped prior to the calculation of your final semester score.

Make-Up Exam Policy. There will be no special or make-up examinations for any student (except in the case of emergency or the stated special accommodations).

Evaluation

Both your ideas and also the clarity with which they are expressed (i.e., your English prose) matter.

We will consider the following criteria in our grading:

Textbook and Resources

Textbook. Robert W. Sebesta. Concepts of Programming Languages, 9th edition. While the class will use the 9th edition, it should be fine to use the 8th edition if you already have access to it. One copy of the 8th edition and one copy of the 9th edition of the textbook is on reserve in the Engineering Library.

SML.

Other Resources.

Tools

Moodle. We will use Moodle for online discussion and assignment submission. If you do not already have an account, please create one and join the course moodle.

PL-Detective. The PL-Detective is a tool developed by Prof. Amer Diwan et al. The PL-Detective aims to make learning programming language concepts fun, while attempting to address many of the goals enumerated above. We will use the PL-Detective for assignments and classroom demonstrations. Go ahead and play with the PL-Detective.

Computing. For a Linux environment, the following are some resources:

Collaboration Policy

You are welcome and encouraged to work together in learning the material. If you worked with someone on an assignment, or if your submission includes quotes from a book, a paper, or a web site, you should thank the source. Bottom line, feel free to use resources that are available to you as long as the use is reasonable and you cite them in your submission. However, note that copying answers directly or indirectly from solution manuals, web pages, or your peers is certainly unreasonable. If you have any doubts in this regard, please ask the course staff.

We will go by the Honor Code set forth by the University:

All students of the University of Colorado at Boulder are responsible for knowing and adhering to the academic integrity policy of this institution. Violations of this policy may include: cheating, plagiarism, aid of academic dishonesty, fabrication, lying, bribery, and threatening behavior. All incidents of academic misconduct shall be reported to the Honor Code Council and those students who are found to be in violation of the academic integrity policy will be subject to both academic sanctions from the faculty member involved and non-academic sanctions given by the Honor Code Council (including but not limited to university probation, suspension, or expulsion).

Please refer to www.colorado.edu/honorcode/ to view the specific guidelines. If you have any questions related to this policy, please contact the Honor Code Council at honor@colorado.edu.

Classroom Behavior

We trust and expect everyone to behave in a civil and courteous manner.

In class, the course staff promises their undivided attention and reciprocally expects the same from you. In today's world, this promise requires turning off transmitting devices, such as cell phones and wi-fi on notebook computers. Notebook computers should be used only for purposes directly relevant to the class discussion (e.g., taking notes). Please notify the course staff if you encounter behavior that distracts from your learning.

Discrimination and Sexual Harassment

We will go by the policies set forth by the University:

The University of Colorado at Boulder policy on Discrimination and Harassment, the University of Colorado policy on Sexual Harassment and the University of Colorado policy on Amorous Relationships apply to all students, staff and faculty. Any student, staff or faculty member who believes s/he has been the subject of sexual harassment or discrimination or harassment based upon race, color, national origin, sex, age, disability, creed, religion, sexual orientation, or veteran status should contact the Office of Discrimination and Harassment (ODH) at 303-492-2127 or the Office of Judicial Affairs at 303-492-5550. Information about the ODH, the above referenced policies and the campus resources available to assist individuals regarding discrimination or harassment can be obtained at www.colorado.edu/odh.

Special Accommodations

We will make every effort to make special accommodations that are reasonable and fair to all students. Please note that we will accept requests for adjustments during the first four weeks of class.

Disability

We will go by the disability guidelines set forth by the University:

If you qualify for accommodations because of a disability, please submit to the course staff a letter from Disability Services within the first four weeks of class so that your needs can be reasonably addressed. Disability Services determines accommodations based on documented disabilities (303-492-8671, Willard 322).

If you have a temporary medical condition or injury, see these guidelines.

Disability Services' letters for students with disabilities indicate legally mandated reasonable accommodations.

Religious Observances

We will go by the policy for religious observances set forth by the University:

Campus policy regarding religious observances requires that faculty make every effort to deal reasonably and fairly with all students who, because of religious obligations, have conflicts with scheduled exams, assignments or required attendance. In this class, we will try to accommodate religious conflicts in a reasonable manner. Please check the exam dates and submit all requests for adjustments within the first four weeks of class.

See www.colorado.edu/policies/fac_relig.html for further details on the policy.

Potential H1N1 Flu Outbreak

If there is a serious outbreak of H1N1 on campus, unfortunately, alterations in course content and/or structure may be necessary.

The University is emphasizing that if you become ill with flu-like symptoms, you should not come to class or have close contact with other students (e.g., study groups). You should not return to class until 24 hours after fever has abated. The course staff will follow the same guidelines.

If you will be absent because of flu-like illness, notify the course staff immediately by e-mail so that we can try to find the best course of action.

Note that the Honor Code set forth by the University applies in case of abuse of this absence policy.

Acknowledgments

This course has benefited from the organization and experience from prior versions of this class taught by Amer Diwan, Michael Main, William Waite, Martin Hirzel, and Clayton Lewis.