Colorado State University Computer Science Department


Syllabus (subject to revisions)

CS 454: Principles of Programming Languages, Spring 2014


Instructor: Prof. Jim Bieman

Graduate Teaching Assistant: Zach Allen (tentative)

Lecture: 3:30-4:45 PM Tuesday and Thursday, Clark C, Room C 248.

Lab/Recitation

CS 454 does not have a separately scheduled Lab/Recitation. Instead, students can work on lab assignments when their schedules permit. Lab activities involve software development in the CS Labs or on a student's own computer (which is what most students do) at a time that works for each student.

Of course, students can meet with the GTA or instructor in the lab or office as necessary. If necessary we will hold extra lab or review sessions, scheduled to meet everyone's time constraints or we will meet in cyberspace.

Texts:

Reference Texts (optional):

Note on Computer Science Group I requirement:

CS 454 can be used to satisfy the Computer Science Group I.A requirement.

Course Description:

The languages that programmers use are constantly changing, and the popular languages of today will surely be replaced by new ones. The objective of this course is to provide students with a working knowledge of the basic principles underlying the design of all computer programming languages. Students completing this course should be able to quickly learn to effectively use new computer programming languages. In particluar, after taking this course students should be able to do the following:

Programming languages are the primary tools of the software professional. In addition to controlling computer hardware, languages serve as a communication medium between people. Software is often produced by a group of people and must be maintained by other professionals. Thus, programs must run efficiently and be expressive---they must be lucid descriptions of a problem solution.

Expect both problem-oriented assignments and assignments that require programming. Programming assignments will make use of the functional programming language Scheme (recently reborn as "Racket"), which is a dialect of Lisp. We will be defining semantic features of languages by writing language interpreters in Scheme (Racket).

There is also a project designed to give students further knowledge and experience in programming languages. Students will select a topic related to programming languages, and explore the topic. They will prepare a short written report describing their findings, and possibly present their key results to the class.

Important Notice: A requirement of this course is the submission of research project proposals and reports via RamCT SafeAssign. According to the SafeAssign documentation:

"SafeAssign is a plagiarism deterrent software program that is now built into our version of RamCT. SafeAssign compares submitted assignments against a pool of academic papers to identify areas of overlap between the submitted assignment and existing works. SafeAssign can be used as a means to deter plagiarism and to educate students on how to properly cite other sources in their work."
I hope to use SafeAssign primarily for the "educate students on how to properly cite other sources in their work" functionality. Thus, you will be allowed to submit drafts and see the SafeAssign reports on your draft documents to help you learn to put information from your sources into your own words and to properly cite references.

Prerequisites:

CS253, CS320. Students are expected to have a background in designing and debugging computer programs, and should have a working knowledge of Java and C++. Students should have a good understanding of concepts from CS320. In particular, they should understand induction.

Grading (subject to change):

Final letter grades will be based on the relative distribution of total scores and not on any preset numerical scale.

Miscellaneous:

Most assignments will be submitted electronically and must be electronically checked in by the specified time. Homework submitted in class is due at the start of class on the due date. If you must miss class, you may submit your homework early. Any deadline extensions must be approved in advance, and must be for reasons which are unexpected and beyond your control, and which involve only a short extension.

Homeworks are to be individual assignments unless instructed otherwise. Limited collaboration is permitted on homework. This means that you may discuss the means and methods for solving problems, but you are not free to copy someone's assignment. The work that you turn in must be your own --- copying is not allowed for any assignments.

Quizzes will generally test knowledge of assigned readings, and will occur at the beginning of class. Expect approximately one quiz per week.

Topics (in approximate order, as time permits):

  1. Introduction.
  2. Syntax.
  3. Functional programming with Scheme (now "Racket").
  4. Inductive sets of data.
  5. Lambda calculus.
  6. Data abstraction.
  7. Interpreters and environments.
  8. Types.
  9. Objects, classes, and types.
  10. Continuation-passing interpreters.
  11. Other language paradigms: logic, APL, etc.

Professional Conduct

Cheating/Student Ethics.  This course will adhere to the Academic Integrity Policy of the Colorado State University General Catalog and the Student Conduct Code. Read the following:

Professional Behavior in the classroom and Labs. We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular:

Academic Integrity. We take academic integrity seriously. At minimum, academic integrity means that no one will use another's work as their own. The CSU writing center defines plagiarism this way:

"Plagiarism is the unauthorized or unacknowledged use of another person's academic or scholarly work. Done on purpose, it is cheating. Done accidentally, it is no less serious. Regardless of how it occurs, plagiarism is a theft of intellectual property and a violation of an ironclad rule demanding `credit be given where credit is due'."
Source: (Writing Guides: Understanding Plagiarism. Off-Site Icon Accessed, January 15, 2009) http://writing.colostate.edu/guides/researchsources/understandingplagiarism/plagiarismoverview.cfm

If you plagiarize, get others to do your assignment, or do someone elses assignment you could lose credit for the plagiarized work, fail the assignment, or fail the course. Plagiarism could result in expulsion from the university. Each instance of plagiarism, classroom cheating, and other types of academic dishonesty will be addressed according to the principles published in the CSU General Catalog (see http://www.catalog.colostate.edu/FrontPDF/1.6POLICIES1112f.pdf).

Of course, academic integrity means more than just avoiding plagiarism. It also involves doing your own reading and studying. It includes regular class attendance, careful consideration of all class materials, and engagement with the class and your fellow students. Academic integrity lies at the core of our common goal: to create an intellectually honest and rigorous community. Because academic integrity, and the personal and social integrity of which academic integrity is an integral part, is so central to our mission as students, teachers, scholars, and citizens, we will ask to you sign the CSU Honor Pledge as part of completing all of our major assignments. Thus, we will ask each of you to write and sign the following statement on hard copy assignment submissions (except Assignment 0) and exams:

"I have not given, received, or used any unauthorized assistance."
Include the honor pledge on assignments submitted via RamCT. You may type the pledge and your "signature" on electronically submitted assignments. Include the pledge as a comment on programming assignments.

More information on academic integrity. See the Practicing Academic Integrity section of the Learning@CSU Web site, a comprehensive resource for students wishing to hone their academic skills.

CSU Student Honor Code. Here is the text of the CSU Student Honor Code, approved by ASCSU and CSU faculty and staff in 2009:

As a student at Colorado State University, I recognize my active role in building a Campus of Character. This includes my commitment to honesty, integrity, and responsibility within the campus community. As such, I will refrain from acts of academic misconduct.


Last updated 9 January 2014