Course:CS 330 - Programming Languages
Spring 2014
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.

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 (johnch@uwec.edu)
Office hours:Monday/Wednesday 2-3 PM, Tuesday/Thursday 11 AM-12 PM in Phillips 134
Webpage:http://www.cs.uwec.edu/~johnch
Class repository:https://bitbucket.org/twodee/cs330_homework_2014a
Discussion board:http://piazza.com/uwec/spring2014/cs330
Teaching assistant:Matt Wisby
Tuesday/Thursday 1-2 PM in Phillips 115
Lecture:MWF 1:00-1:50 PM
Phillips 119
Exams:Midterm - March 12
Final - Wednesday, May 14, 10-11:50 AM
Textbook:Programming Language Pragmatics (3rd edition)
by Michael Scott
ISBN: 978-0-1-2374514-9
Grading: Your instructor employs a grading system that is somewhat nontraditional. It places more emphasis on self-improvement and mastery of the course material than meeting deadlines, though effective use of one's time is still a necessary ingredient for your learning.

Grades are assigned based on how many Blugolds you earn. You, the student, pick the grade you want and complete the necessary tasks to achieve Blugolds. The grading matrix follows:

Blugolds earnedGrade
0-2F
3-5D
6-7C-
8C
9C+
10B-
11B
12B+
13A-
14A

Tasks include:

  • Homework assignments (5, each worth 2 Blugolds)
  • Midterm (worth 2 Blugolds)
  • Final (worth 2 Blugolds)
  • Participation (1 Blugold for >= 60% of 1/4-sheets turned it at the beginning of lecture, 2 for >=90%)

Assignments are also graded a bit differently from the norm:

  1. Partial credit is not awarded. Each assignment is graded pass/fail. To receive Blugolds for an assignment, you must complete all requirements listed in its specification.
  2. Submissions that fail to meet all requirements may be resubmitted if enough of the assignment is completed by the deadline to qualify for later-week submission. In general, one qualifies for later-week submission by having all required files. The grading script will inform you when your submission qualifies.
  3. Only one assignment (new or resubmitted) may be turned in per week. The submission week starts on Sunday and ends on Saturday.
  4. All submissions must be turned in by the end of the last Thursday 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 first 1/4-sheet, which is turned in on January 24, gets 1 free participation point.