CSci 1901, Spring 2006: Syllabus
| Dr. Maria Gini|
EE/CSci 5-213, (612) 625-5582,
Office hours: Monday 4:00-5:00 and Friday 1:15-2:15 or by
Email: gini at cs.umn.edu
Email: barn0357 at umn.edu
Email: mbeckman at cs.umn.edu
|John Chilton |
Email: chil0060 at umn.edu
|Alex Dean |
Email: dean0131 at umn.edu
|Tae Hyun Hwang |
Email: thwang at cs.umn.edu
|Michael Rose |
Email: rosex232 at umn.edu
Email: souku024 at umn.edu
Email: watters at cs.umn.edu
|All TA office hours will be in 4-240
|For office hours, look at the Staff
and Office Hours page.|
|Lectures:||MWF 2:30-3:20pm||EE/CS 3-210|
|Lab Sec 002:||Th 8:00am-9:55am||EE/CS 1-260
|Lab Sec 003:||Th 10:10am-12:05pm||EE/CS 1-260
|Lab Sec 004:||Th 12:30pm-2:15pm||EE/CS 1-260
|Lab Sec 005:||Th 2:30pm-4:25pm||EE/CS 1-260
|Lab Sec 006:||Th 4:40-6:35pm||EE/CS 1-260
Abelson and Sussman,
Structure and Interpretation of Computer Programs,
McGraw Hill Book Company, 1996.
Additional reference books
"The revised (five times) Scheme report"
This is the official definition of Scheme and the best place to find
a precise description of all the system defined procedures in Scheme.
Hailperin, Kaiser, and Knight, "Concrete Abstractions", PWS, 1999.
This is a full fledged textbook on Scheme with many examples and exercises.
D. P. Friedman and M. Felleisen, "The Little Schemer", Fourth Edition,
MIT Press, 1996.
An excellent booklet which takes the reader through a sequence of
exercises in increasing order of complexity. Highly recommended.
R. Kent Dybvig,
The Scheme Programming
Language, 1996, Prentice-Hall. An online book, useful
for the syntax and examples of how to use system defined procedures.
Allen B. Downey, Jeffrey Elkner and Chris Meyers
Learning with Python, from
by Guido van Rossum.
Python for Lisp
Programmers, by Peter Norvig, Director of Search Quality at Google.
All handouts, assignments, announcements, and any additional
material will be available through the class web page at
You are required to use the 'stk' software package, which is installed
on the IT Labs computers
(which you are entitled to use through paying the IT Instructional
Computing Fee). STk is public domain and runs under
Windows, Linux and Solaris. You can find information about it from
the STk Home page
You may install stk on your own system, but TAs will
NOT be able to assist you with managing your own computing environment.
You'll be able to do most assignments through dial-up access, but
for the assignments requiring the STk graphics you'll have to use
a computer or terminal running the X Window system.
We will also use Python. Python is in the public domain and widely
available for Unix, Linux, and Windows.
Using the above weights, a total of 90% and up will earn you
some level of A, 80% and up some level of B, 65% and
up some level of C, 50% and up some level of D.
You need a C- or higher for the class to count for the CS or
- 30% labs
- 10% homeworks
- 10% short quizzes and class activities
- 2% in class quiz 1
- 13% midterm exam 1
- 2% in class quiz 2
- 13% midterm exam 2
- 20% final exam
Exams are open book and notes.
CSci 1901 is a required course for CS and CE students that
should be taken in the freshman year. It is one of the courses
required for admission to the CSci major, and is the first class in
the sequence for majors. 1901 offers an introduction to the fundamental
principles of programming and to different programming paradigms, with
emphasis on the design of abstract data types and recursive algorithms.
Computer science students need to acquire the reasoning and abstraction
skills needed for designing algorithms and programs. This course
teaches how to think as a computer scientist, by teaching the process
of building abstractions to hide implementation details, of decomposing
problems into simpler problems, and of controlling the intellectual
complexity of designing large software systems.
1901 does not assume any previous programming knowledge; however it
does have a co-requisite of Calculus I. This means you should either
have completed Calculus I successfully, or should be taking calculus I.
Some material from Calculus I, such as differentiating polynomials, may
be used in 1901; moreover, the mathematical and logical reasoning
skills used in Calculus I also play a heavy role in this class.
Upon completing this course you should be able to:
explain what a computational process is and be able to express
computational processes using procedures in Scheme;
explain what an abstract data type is, how to create new abstract
data types, and how to express them in Scheme;
use recursion as a problem solving method;
explain how the process of evaluation is performed from the
perspective of the computer and how procedural objects are created
explain and use basic principles of program design, such as
abstractions to hide implementation details, and problem
decomposition to control the intellectual complexity of the problem;
explain how to use different programming styles (functional,
use good programming style in the programs you write;
design appropriate data structures and algorithms to solve a given
problem, using recursion whenever appropriate;
design, implement, and test a Scheme program that solves a given
problem, and have some basic understanding of the computational
complexity of your program.
For an uptodate class schedule
look at the Class Schedule page.
Here is the preliminary schedule.
You are expected to read required sections BEFORE coming to class.
|| Jan 17-19
|| Overview, Scheme Intro, Expressions
|| Jan 22-26
|| Procedures and Name Scope
|| Jan 29- Feb 2
|| Recursion and Iteration
|| Feb 5-9
|| Data Abstraction, Pairs, Lists
||1st homework due Monday Feb 5||
|| Feb 12-16
|| Procedures as parameters and as return values
|| 1.3, 2.2
|| 66-78, 105-107
|| 2nd homework due Monday Feb 12
|| 1st In Class Quiz:
Monday Feb 12
|| Feb 19-23
|| Hierarchical Data, Sequences, Mapping and Filtering,
|| 2.2 (omit 2.2.4)
|| 1st Midterm exam:
Monday Feb 19
|| Feb 26-Mar 2
|| Symbolic Data, Sets, Trees, Huffman Coding
|| Mar 5-9
|| Multiple Representations of Data
|| Mar 19-23
|| Assignment and Local State
|| 3rd homework due Monday March 19
|| Mar 26-30
|| The Environment Model
|| 2nd In Class Quiz: Monday March 26
|| Apr 2-6
|| Mutable Lists, Queues, Tables
|| 2nd Midterm exam: Monday April 2
|| Apr 9-13
|| Agenda, Constraints
|| Apr 16-20
|| Apr 23-27
|| 4th homework due Thursday April 26
|| Apr 30-May 4
|| 5th homework due Thursday May 3
|| Final Exam: Wednesday May 9, 1:30-3:30
All work submitted must represent your own individual effort unless
group work is explicitly allowed (like with your lab partner).
You are encouraged to discuss course material and approaches to problems with
classmates, the TAs, and the professor,
but you should never misrepresent someone else's work as your own.
It is also your responsibility to protect your work from unauthorized
Collaboration on homeworks, or exams is cheating and grounds for
failing the course. Any student caught cheating will receive an F as
a class grade and the University policies for cheating will be followed.
For further information on academic misconduct see
Note on Academic Conduct for New Students
and The Office for Student Academic Integrity.
If you have any questions about what is and is not allowable in this
class, please ask the course instructor.
Incompletes will be given only in very rare instances when an
unforeseeable event causes a student who has completed all the
coursework to date to be unable to complete a small portion of the work
(typically the final assignment or exam). Incompletes will not be
awarded for foreseeable events including a heavy course load or a
poorer-than-expected performance. Verifiable documentation must be
provided for the incomplete to be granted, and arrangements for the
incomplete should be made as soon as such an event is apparent.
Expectations from students
This course is part of a Bush Foundation study to improve
learning in large classes. As part of this project,
a number of activities will be done during the semester.
Activities will include some questionnaires to get your opinions,
group activities, active participation to class, pop quizzes,
and the creation of a Student Managment Team. We hope you'll be
willing to collaborate to this important project, which will benefit
students who will take the class in the future. Thank you in advance.
Attending class is very important to learn the material, to clarify
any misunderstanding, and to keep up with studying.
To encourage attendance there will
be 10 unannounced short quizzes or class activities during the semester.
Each of them will be worth 1% of the final score.
Student Management Team
To increase communication between the students and the teaching staff,
a Student Management Team will be created. The Student Management Team will
include 2 students per lab and will be made up by students who volunteer to
be part of the team. The team will meet outside of class 5-6 times during
the semester to discuss student concerns, ways to improve the course, etc.
No credit will be given to participate in the team, just the reward that
comes from being able to discuss critically with others what is happening
in the course and how to make it a better educational experience for
In the weekly 2-hour lab meetings, students apply concepts covered in
lecture and in the textbook by creating working programs that solve a
variety of problems.
The general format for the labs is as follows:
Copyright: © 2000-2007 by the Regents of the University
- Typically a student works with another student on the labs. In
some situations, such as an odd number of students or broken machines,
with instructor consent, a student may work alone or in a group of three.
- Each lab is broken down into several steps that are graded
by a lab instructor as they are completed.
Students are allowed to re-do each step once for a higher grade
before moving on to the next step. Steps not completed
can be completed after the lab (with the lab partner) before the next
using the University public computing labs or the student own computer.
Work submitted for grading must run on the University computers
because that is where they will be run and graded.
All grading must be done in person with a
TA unless another arrangement has been announced.
- In order to do well on the exams, students
need to learn programming and problem solving skills that are
developed by doing the lab work. As a rule of thumb, class performance
will largely be determined by the amount of effort put in on the
labs, in addition to reading the text and attending lectures.
- Each lab section has multiple
lab instructors that are there to help as well as grade
the lab steps as they are completed.
Department of Computer Science and
Engineering. All rights reserved.
Comments to: Maria Gini
Changes and corrections are in red.