CSSE 304 Syllabus and Policies

Rose-Hulman Institute of Technology
Department of Computer Science and Software Engineering
Spring 2013

Catalog Course Description

Syntax and semantics of programming languages. Grammars, parsing, data types, control flow, parameter passing, run-time storage management, binding times, functional programming and procedural abstraction, syntactic extensions, continuations, language design and evaluation. Students will explore several language features by writing an interpreter that implements them.

Course Description: Programming Language Concepts

In this course, you will:

Prerequisites

CSSE 230 and MA 275

Instructor

Michael Wollowski
wollowski@rose-hulman.edu
(812) 877-8650
Office F-218

Teaching Assistants

Schedule of lab hours

Required Texts

Recommended Texts and Resources

Software

You will need a Scheme interpreter. The official Scheme interpreter/compiler for CSSE 304 is Chez Scheme. You may use another Scheme environment if you wish, but I will use Chez to test your code, so make sure that anything you submit works there.

The full commercial Version 7 of Chez Scheme is available on acadcomp-cra.rose-hulman.edu, abacus.csse.rose-hulman.edu, and sliderule.csse.rose-hulman.edu. Simply type
scheme
      or
scheme filename.ss
to start the Scheme interpreter. You can comnnect to these machines using SecureCRT (which should be on your laptop) or any other ssh client (such as puTTY - http://www.putty.org.

The "petite" (interpreter-only) version of Chez Scheme is available for download for a Microsoft Windows or Linux machine from http://www.scheme.com. You should install it on your laptop computer. On exams, I may require you to write some Scheme code and get it working; you may not be allowed to connect to the network.

You may use any text editor to create your Scheme code. The one that I recommend is Emacs. It has a steep learning curve, but a big payoff. In class, I will show you some good reasons for choosing Emacs as your Scheme editor. Gnu Emacs is available from http://www.gnu.org/software/emacs/ The Emacs and Scheme document describes the use of emacs with Scheme.

Point Distribution and Attendance Policy

45%Homework, Programs, Quizzes, in-class exercises
15%Exam 1 (primarily on Scheme)
20%Exam 2
20%Final Exam

Regardless of your overall course average:

In summary, your average is the starting point for your grade. In most cases, it is also the ending point, but I reserve the right to use my judgment in cases where it is clearly appropriate.

Students with more than two unexcused absences from class may be asked to drop the class. A fourth unexcused absence will usually result in a grade of F for the course. It has been my experience that absences from class usually involve the students who can least afford to miss class. If you think you are the exception to this rule, please discuss it with me.

Policy on Late Work

Written problems and quizzes must be turned in on time if you want credit for them.

We all have days when we are extremely busy, or times when a program takes longer to complete than we expect it will. To account for this, I give each student a “late day bank account” that starts with three late days.

  1. Using (withdrawing) a late day allows you to turn in any programming assignment up to 24 hours after the time it is due.  
  2. You may earn (deposit) a late day by turning in an assignment at least 24 hours early. There is no limit to the number of late days you can save up.
  3. Only one late day may be used or earned on any one assignment.
  4. Overdrafts are not allowed.  If your late day account is empty, you should take it as a sign that you need to change your approach to the course.  If your account is empty and you submit an assignment late, you will receive no credit.
  5. Unused late days are not redeemable at the end of the term.

Notification for a deposit or withdrawal: You do not have to do anything for deposit. To withdraw, you need to email me before the assignment due date.

Some particular assignments may be designated as ”no late days“ assignments. This might happen because:

Academic Integrity

See the CSSE department statement on academic honesty. Dishonesty on assignments or exams may result in a lowered course grade (possibly an F), and/or disciplinary action.

I encourage you to discuss the problems and general approaches to solving them with other students. But when it comes to writing code, it should be your own work (or the work of your group if it is a group or partner assignment). If you are having trouble understanding how some pre-defined Scheme procedure works or pinning down a run-time or logic error in your program, by all means talk to someone about it.

If you use someone else's ideas in your solution (or any other work that you do anywhere), you should

In general, you should not look at another student's code to get ideas of how to write your own code. Beginning the process of producing your solution with an electronic copy of work done by other students is never appropriate.

On exams and quizzes: Unless explicitly stated otherwise, all work on tests, quizzes, and exams is to be individual. Of course you may not copy work done by other people taking that test. Most exams will be open book and notes, but those notes must not include copies of previous years' tests or homework problems or their solutions (except those that I have posted on the course web site). Since you can use your computer for reference during the exams, you may not have these previous solutions in electronic form, either. The general rule is that you may not bring anything to the exams that will give you an advantage over someone else who is not as well-connected to the past as you are.

Penalties: My minimum penalty for a first offense is twice the value of the assignment or exam. Thus if you cheat on any part of an assignment that is worth a total of 60 points, your maximum score for that assignment will be -60. If you cheat on a 100-point exam, your score for the exam will be -100. The philosophy behind this is that if it comes down to a choice between submitting someone else's work and submitting nothing, your expected score should be higher if you submit nothing.

If you get into a position where you can't complete an assignment legitimately, the correct approach is to not submit the assignment and then to discuss with me how to improve your situation.

Classroom Etiquette

The basic rule for the classroom is: Don't do anything that will detract from your learning or that of people around you. Such things include missing class, talking to other people about things unrelated to the course, chewing gum noisily, connecting your computer to the network and using it for things unrelated to the course, refusing to work with a partner on a class activity.

Your computer can be a great tool in class, or it can be a distraction for you and for others around you. Please don't let it become the latter.

The other rule is: Do things that will enhance your (and everyone's) learning. In general, no question is too dumb. Ask them; other students will generally be grateful that you did. I will usually ask a number of questions in class. You should try answering them aloud. Sometimes your incorrect guesses may even lead to a more useful discussion than if you give a correct answer right away!