Course:CS 330 - Programming Languages
Spring 2013
Description and objectives: In this course we investigate the design of programming languages. Some languages closely model the behavior of the underlying computer, others try to make it easier to prove the correctness of the software we write, and still others just try to help us get our job done quickly. We will explore the various approaches to data typing, memory management, data encapsulation, generic programming, polymorphism, and parameter passing. Also in this course we will look at crafting our own language and an interpreter. This course contributes to UWEC's creative and critical thinking learning goal.

Upon successfully completing this course, you will be able to:

  • Recognize and exploit the strengths of three major programming paradigms: imperative, functional, and object-oriented.
  • Reason about the strengths and weaknesses of the several mainstream type systems.
  • Weigh the costs and benefits of static and dynamic decision making.
  • Design and develop tools for recognizing and interpreting domain-specific languages.
  • Develop code in languages with addressable or dynamically-allocated memory.
Instructor:Chris Johnson (
Office hours:MW 2-3 PM, T 2-3:15 PM in Phillips 134
Lecture:MWF 1-1:50 PM
Phillips 119
Exams:Midterm - March 13
Final - May 14 at 1 PM
Textbook:Programming Language Pragmatics (3rd edition)
by Michael Scott
ISBN: 978-0-1-2374514-9
Grading: Your instructor is experimenting with ways to eliminate the terrible code he must grade. So, you will be guinea pigs in a slightly strange alpha-maturity grading system.

Grades are assigned based on a contract system. You, the student, pick the grade you want and complete the necessary tasks to achieve it. Tasks include completing assignments (1 Blugold each, with 5 possible), meeting certain competency levels on a midterm and final (up to 2 Blugolds each), and participating in lecture (1 Blugold for >= 85% of quarter sheets turned in at the beginning of lecture).

The grading matrix follows:

Blugolds earnedGrade

Assignments are also handled a bit differently from the norm:

  1. Assignments do not have individual deadlines.
  2. Assignments do not have itemized scores. Your instructor will offer feedback, but each is graded pass/fail.
  3. To receive a Blugold an assignment, you must complete all requirements listed in its specification. Submissions which fail to do so may be resubmitted.
  4. Only one assignment (new or resubmitted) may be turned in per week. The submission week starts on Sunday and ends on Saturday.
  5. All submissions must be turned in by two Fridays (May 3) before finals week.
Communication: Your instructor is finite and values focus. Please keep these points in mind when needing to communicate with him:
  • Honor your instructor's closed door. Please visit only during posted office hours. Do not drop by at other times without having scheduled a time via email at least one day before the meeting.
  • Your instructor values his time with family. He does not respond to email after 5 PM or on weekends. Plan accordingly.
Good studentship: Follow these principles to maximize your learning and grade:
  • A good education requires both good teaching and good learning. It takes hard work from both instructor and student.
  • Early is better than on time.
  • Plan for homework to take longer than you think.
  • Do your own coding. Discussion of problems is allowed, but using another's code, sharing your code with others, or soliciting solutions from others will earn you a report of academic misconduct and lower your grade. You don't want to live in a world serviced by people who did such things to squeak by, so don't do them yourself.
  • Grades are calculated according to your achievement, not your circumstances.
Accommodations: Any student who has a disability and is in need of classroom accommodations, please contact the instructor and the Services for Students with Disabilities Office in Old Library 2136 at the beginning of the semester.
Easter egg: Each student who includes the sentence "I read the syllabus!" on the quarter sheet turned in on January 25, gets 1 free participation point.