Image goes here
Syllabus
CptS 355 - Programming Language Design
Washington State University

Course Location

MWF 10:10-11:00, Thompson 24

Course Web Pages

Information you need to successfully complete the course will be posted on the course web pages from time to time. This syllabus, a calendar of lectures and assignments, assignments themselves, lecture notes, handouts, etc. will all be found on the web pages: http://www.eecs.wsu.edu/~hauser/cs355.

Teacher Contact Info

Prof. Carl Hauser
Office: EME 53
Phone number: 5-6470
E-mail: hauser@eecs.wsu.edu
Office Hours: Mon and Wed 3PM-4PM or by appointment

TA Contact Info

Jin Liu
Office: Sloan 313
Phone number: 335-6601
E-mail: jinliu@eecs.wsu.edu

Course Description

This course provides an introduction to basic concepts in the design of programming languages. Students are expected to already be familiar with the C and C++ programming languages. Examples of concepts will be presented using a variety of languages (Scheme, LISP, ML, and Python, for instance). At the end of the course students will be familiar with the concepts that are commonly available in widely used programming languages and have experience using them in several contexts.

Course Objectives

This course will help students to achieve the following objectives.
  • Develop an understanding of components of programming languages including control structures, names, types, exceptions, etc.
  • Become familiar with different kinds of programming language such as imperative, functional and logic languages.
  • Use several programming languages.
  • Learn how syntax and semantics are formally specified.
  • Develop a basic understanding of programming language implementation, especially insofar as the implementation impacts the design.

Text

John C. Mitchell, Concepts in Programming Languages, Cambridge University Press, 2003.

Additional Reading

Other materials will be either handed out, found on the Web, or provided on reserve at the library.

Course Prerequisites

Cpt S 223, 224

Course Requirements

Attendance is expected at all lectures. Lecture notes will be posted on-line but reading the notes is not an adequate substitute for attendance. You are also expected to participate in class discussions to a reasonable extent. This aids learning and provides valuable feedback on the lecture. I reserve the right to lower the grade of any student who is markedly deficient in attendance and/or participation.

Homework, Assignments, and Tests

There will be two mid-term exams and one final exam. There will be three or four homework assignments given out, involving exercises from the book. There will be five programming projects. All programming assignments can be done with the computers in the instructional lab in Sloan 353, or alternatively, can be done at home. Turn-in will be via file upload and for some projects will involve an interview with the TA. The following allocation of grade percentages is tentative, and may change during the semester.
  • Exams (3): 50% (15, 15,20)
  • Programming projects (5): 45% (7, 9, 11, 9, 9)
  • Homework (4): 5%

Students are reminded that a grade of C or better is required in this class is required in order for this class to be counted in a computer science degree program. To achieve a grade of C or better in the course, you must separately achieve a grade of C or better on the exams and C or better on the programming projects.

Cheating Policy

Exams, homework, and programming projects are subject to the EECS academic honor code. DO NOT CHEAT IN ANY WAY: DO YOUR OWN WORK! Doing your own work means that you may NOT work together with another student on any assignment. It means you do not turn in a solution you found on the web.

I do not know why this is such a difficult concept for students, but every semester I hear sob stories from students claiming that they didn't understand the policy. I don't want to hear them and you don't want to suffer the consequences. SO DON'T DO IT! If you are stuck on a problem I suggest discussing it with me or with the TA. You don't have to wait for office hours: I read e-mail all day, every day, so ASK!

Side effects of cheating can be severe, ranging from a failing grade on the assignment involved to a failing grade in the class to expulsion from the university.

Re-grading Policy

All homework and projects will be marked as soon as possible after the due date and returned during lecture. Additionally, some grades will be sent via e-mail. If you discover that a mistake was made in grading the work may be submitted for re-grading no later than one week after the assignment is returned. This is the only window of opportunity for re-grading. In order to request re-grading, write or type a detailed explanation of the reasons for the re-grading. Submit the explanation along with what was originally turned in to the teaching assistant or professor. Do not orally ask either the professor or TA to re-grade any piece work.

Students with Disabilities

I am committed to providing assistance to help you be successful in this course. Reasonable accommodations are available for students with a documented disability. Please visit the Disability Resource Center (DRC) during the first two weeks of every semester to seek information or to qualify for accommodations. All accommodations MUST be approved through the DRC (Admin Annex Bldg, Rooms 205). Call 509 335 3417 to make an appointment with a disability counselor.

Stress management

Students sometimes encounter stress and anxiety issues associated with homework, tests, or life situations that can be an obstacle to success in their courses. WSU Counseling Services (335-4511) offers information including a test anxiety workshop conducted several times each semester. Visit http://www.counsel.wsu.edu/self-help/test-anxiety.html for more information.

Other Policies and Expectations

  • I expect you to demonstrate critical thinking across the spectrum of course work.
  • I expect you to engage in active learning: speak up when you don't understand, question assumptions, relate course material to your experience outside class, seek out additional experience and reading related to the class.
  • I expect you to promptly review feedback you receive from me, the TA, or other students; to actively clarify the feedback if the material is still unclear; and to incorporate the feedback in your future work.
  • I expect you to spend adequate time on the course. Adequate time includes getting enough rest so that time you spend on course tasks is well-spent time. Adequate time includes proofreading and reviewing your assignments before you hand them in.

     

  • I expect you to have high expectations of yourself: set goals for yourself and try to do your very best. Consciously think about the balance between what you do to earn a grade and what you do to learn. (If I'm doing something that puts these in opposition to each other please let me know.)

Advice

  • Don't wait until the last minute to do homework or projects. The lab gets busy, computers break down, people get sick. These are not sufficient excuses for an extension.
  • Save early; save often!
  • Come see me or the TA if you are confused. Don't wait for office hours -- send a question by e-mail.
  • Come see me and the TA anyway. We'd like to know more about you.
  • If you have trouble with spelling and grammar, get and use a word processor that has spelling and grammar flagging.

Topics

  • Design influences and evaluation of programming languages. Classification of programming languages
  • Language Translation: Interpretation, Compilation (including analysis and synthesis phases of compilation, syntactic and semantic analysis).
  • Bindings, binding environments, binding times.
  • Functional languages such as SCHEME, LISP, and ML, including the notion of first class functions.
  • Data type specification, implementation, syntax, persistence, declaration, typing systems, type equivalence, and type checking
  • Support for and implementation of abstract data types, encapsulation, information hiding, separate compilation, naming issues
  • Memory Management (the run-time stack and heap).
  • Logic programming languages such as PROLOG.
  • Sequence control: within expressions (arithmetic/logical expression evaluation, pattern matching and unification), between expressions (flow of control constructs) and between blocks (subroutines, exceptions, coroutines, scheduled execution), including lazy vs. eager evaluation, subroutine implementation and parameter transmission.
  • Scoping concepts, including nested scope, lexical scope and dynamic scope.
  • Object oriented language issues: object, template, inheritance and virtual function implementation using Java, C++, or another object oriented language
  • Concurrency: threads, shared data, synchronization
(c) 2003 Curtis Dyreson, (c) 2004-2006 Carl H. Hauser           E-mail questions or comments to Prof. Carl Hauser