MWF 2:30-3:20, BAG 261
Expand our notions of programming, learn some basic concepts of programming languages, and gain insight into how languages are implemented. The main focus of the course will be to study functional and object-oriented programming using Scheme and Ruby, with additional topics, particularly implementation techniques and other languages, as time allows. The final project will be to implement a compiler or interpreter for a small language.
CSE 373 (data structures and algorithms)
There are no required books for the course. Copies of the Scheme language definition and handouts are posted on the course web, and many good resources are available online for Scheme and Ruby. We have asked the bookstore to stock copies of Dybvig's The Scheme Programming Language and Thomas' Programming Ruby for those who wish to have a book for reference.
We have access to the College of Arts & Sciences Instructional Computing Lab. All of the software we useis installed there and is freely available and can be installed on your own machines.
Most of the assignments will consist of fairly short programming problems. There will be one or two larger programs, plus the project at the end. There also will be some shorter written problems on some of the assignments.
There will be a midterm exam and a comprehensive final exam at the end of the quarter on Tuesday, June 7, 2:30-4:20.
Grades will be calculated roughly as follows (subject to change)
The last 5% of the grade will take into account effort, contribution to class, etc.
If you discover an error in the grading of an assignment or test, please bring it to our attention within one week after the material is first returned.
You are expected to do assignments on your own, except when an assignment explicitly allows group work. Any cases of cheating that are discovered will be handled according to the University disciplinary policy.
But we also want to be clear on what is legitimate collaboration -- please help each other out in this class in appropriate ways! It is OK to help other students debug their programs, and to discuss general approaches to solving problems. However, it is not OK to copy someone else's code or homework solution, and you need to be careful about developing or using detailed code discussed with others. In particular, you should never accept code from or provide code to another student that could be incorporated into their work. It is also never appropriate to have a colleague or tutor "walk you through" a problem or assignment to develop a detailed solution. Exams must, of course, be done on your own.
This course includes a substantial final project. Developing good assignments of this size can take years. To make sure that assignments are as good as they can be, we may reuse them, with appropriate changes to take into account feedback from past offerings of the course. It is a clear case of academic misconduct if you hand in a solution to a similar project from a previous quarter, or obtain copies of such solutions from others. We have effective tools for checking this, as well as other cases of cheating, electronically.
For more details, please look at the CSE department policy on academic misconduct.
Work is due at the time given on the assignment, generally at the beginning of class for written assignments, and by a specific time for work submitted online. It is exceedingly unlikely that skipping class or being late to class because of homework is in your interest. For the entire quarter, you may have four (4) “late days”. You are strongly advised to save them for emergencies. You may not use more than two (2) for any one assignment, and on group projects you may only use late days if all members of the group have them available, and all members of the group will be charged for each late day used. They must be used in 24-hour (integer) chunks
Incompletes are never given never simply because assignments were not completed on time.
Back to CSE 413 home