This is the web site for Prof. Hunsberger's section of CMPU-101. |
| Section | Professor | Class Meetings (OLB 105) | Lab Meetings (OLB 105) |
| CMPU-101-02 | Prof. Hunsberger | Mon/Wed @ 12:00 - 1:15 p.m. | Thu @ 12:00 1:15 p.m. |
The course covers the following topics:
To facilitate the writing and running of programs, this course employs
the DrScheme software, which is installed on all of the lab computers
and is freely available from drscheme.org. (Note: Ignore the
pop-up box about DrRacket.)
There is no textbook for this course. Instead, students will be
provided with links to handouts and other materials as needed throughout the
semester. .
Overview
People use computers to solve problems. To be effective, programmers
must thoroughly understand not only the problem to be solved, but also
the complex relationship existing between the programmer, the program
and the computer. Investigating this relationship raises several
unexpected, but important issues. For example, how can we interpret a
computer (i.e., a piece of hardware) as a computational device? How
can different kinds of data be stored in computers? What sort of
language do we want to use to "communicate" with a computer? What
sorts of problems can computers be expected to solve? What are the
basic elements of computation? What concepts or constructions can
facilitate the task of programming a computer? This course addresses
these and other important issues by having students directly interact
with computers from the very beginning. The lectures involve the
exploration of topics not only by discussing them, but also by
regularly putting ideas to the test in a live computer session. (The
computer code seen in lecture is regularly posted on the course web
site.) The course includes weekly lab sessions in which students get
regular hands-on experience with the issues being addressed in the
lectures. These lab sessions also serve as warm-up exercises for
programming assignments, in which students explore issues in greater
depth.
These topics are addressed in the context of the Scheme programming
language. Although these topics could be discussed in the context of
any programming language, Scheme is a good choice because it
has a comparatively simple computational model and syntax, yet is as
powerful as any programming language.
Nuts and Bolts
Instructor Prof. Luke
Hunsberger, OLB 121
Prof. Hunsberger's Office Hours See My Web Page Lectures
Mon/Wed @ 12:00 - 1:15 p.m. in OLB 105
Labs
Thu @ 12:00 - 1:15 p.m. in OLB 105 Text There is no textbook for this course.
Instead, you will be provided with links to handouts and
other materials as needed. If you want to print them out,
you might consider purchasing a loose-leaf binder to hold
them, along with lab and assignment solutions.
Lectures The lectures will augment
the material covered in the weekly text segments by
providing in-depth examples and analyses. The material
covered each week builds on what was covered in prior
weeks. As such, it is essential that you attend
every lecture (and keep up with the reading assignments).
Labs This course has weekly lab sessions held in
the same classroom, OLB 105. The lab computers use the Linux
operating system and have the drScheme software that we will be using
throughout the semester. Even if you have the DrScheme software
installed on your own computer, you must do your lab work in the lab
on one of the lab computers during the lab time. Each lab session
should be viewed as a warm-up exercise to help prepare you for the
next programming assignment. You must do your own
work; so asking one of your classmates for assistance is not
permitted. If you have questions, ask the professor or one of the lab
coaches. We are there to help! There is nothing to
turn in or submit for a lab session. Instead, when you are finished,
simply ask the professor (or one of the coaches) to verify that you
have done the work and your grade will be recorded on a scale from 0 (no
work) to 3 (well done).
Exams There will be one in-class midterm exam and one final exam. Both exams will be open-book and
open-notes. To reduce the need for printing out lots of
materials to bring to the exams, we may provide you with access to a
web browser during the exam that will be limited to the cs101
materials. The midterm exam will occur shortly before spring
break. It is your responsibility to check the official
schedule (see AskBanner) for the final exam.
Assignments There will generally be one assignment
every two weeks, usually due on Monday; however, there may be
modifications to this schedule to fit in with the timing of spring
break and the midterm exam. Most assignments will be programming
assignments. Unless explicitly authorized for a
particular assignment, collaboration is
NOT allowed on assignments. If you run into
difficulty with an assignment, you should contact one of the student
coaches during their office hours or
Prof. Hunsberger during his office hours. All
programming assignments must be submitted electronically. As
you will find out, submitting assignments electronically is easy to
do from the Lab computers. If you want to do a programming
assignment on your own computer (see "Software" below), save a copy
of your assignment files on a USB flash drive and submit the
assignment from one of the Lab computers. More details will be
provided in the near future about how to submit an assignment
electronically. You must also turn in a paper copy of your
programming assignments.
Coaches' Office Hours Office Hours
Software The computers in the lab are set up for
you to use the DrScheme software. If you'd like to set up DrScheme on
your own computer, then go to
drscheme.org to
download the software. (Ignore the pop-up window about DrRacket.)
(Let me know if you have any trouble. In the meantime, use the
computers in the lab.)
Grades
Based on Labs (15%), Assignments (50%), Midterm Exam (15%),
and the Final Exam (20%).
Note: Although
higher numerical scores will necessarily receive higher grades,
I do not feel bound to follow the frequently used 90/80/70/60
cut-offs.
Academic Integrity Don't cheat! Read
Originality and Attribution: A guide for student writers at Vassar
College. The guidelines that apply to writing in general apply
equally well to the writing of computer programs. Copying someone
else's code without attribution amounts to
plagiarism! School policy dictates that instructors
must report all suspected incidents of cheating to their department
chair. Did you read the preceding sentence?! Please don't put
yourself or your professor in that position. In this course,
collaboration is not allowed on labs,
assignments or exams.
Note: The paragraph above, as well as the
one that follows below, were lifted practically verbatim from the web
page for sections 02 and 03 of CMPU-101 in the Fall of 2006!
Students with Disabilities
Academic accommodations are available for students with
disabilities who are registered with the Office of Disability and
Support Services. Students in need of disability accommodations
should schedule an appointment with me early in the semester to
discuss any accommodations for this course which have been approved by
the Office of Disability and Support Services, as indicated in your
DSS accommodation letter.
Caution! This course starts out with basic
concepts, but each week the text segments, lectures, labs and
assignments build new ideas on top of what was seen previously.
Therefore, it is extremely important that you attend all lectures,
keep up with the reading, and do all labs and assignments in a timely
fashion. Historically, those students who experienced difficulty with
CMPU-101 got into trouble by ignoring this advice. If you find
yourself having trouble, by all means, come to my office hours! I'm
more than happy to assist!
Calendar
The following calendar of lecture topics will be filled out during
the course of the semester. Typical calendar entries will also
include links to the code we looked at in class that day.
Mon. (Class)
Wed. (Class)
Thu. (Lab)
Jan. 18
Introduction to Scheme and DrScheme: Primitive
Data, Evaluating Primitive Data.
Scheme handout,
pages 1-14 (Intro plus DEFINE special form).
Jan. 19
Lab 1:
Welcome to your CS account. How to submit an assignment.
Jan. 23
The default rule for evaluating non-empty lists.
Jan. 25
Special forms: define and quote
Scheme handout,
pages 15-16 (QUOTE special form).
Jan. 26
Lab2: Defining functions using define and lambda.
Scheme handout,
pages 17-26 (Predicates; Defining functions using the LAMBDA
special form).
Code from class
Jan. 30
More creating functions with the lambda special form.
Scheme handout,
pages 27-30 (Strings, PRINTF, LOAD, Run Button, Comments),
Code from class,
Interactions.
Feb. 1
Scheme handout,
pages 31-37 (Conditional expressions).
Code from class.
Feb. 2
Lab 3 SOLUTIONS!!.
Feb. 6
Output vs. side effects; conditional expressions; and recursive
functions
More fun with Lab 3,
Code from class.
Scheme handout
(Recursion)
Feb. 8
Homework advice; More fun with recursion.
Code from class.
Feb. 9
Lab 4 SOLUTIONS!!.
Feb. 13
More recursion; tail recursion; accumulators.
Code from class
Scheme handout
(Tail Recursion)
Feb. 15
More accumulators and tail recursion.
Code from class
Feb. 16
Lab 5 SOLUTIONS!!
Feb. 20
The LET and LET* special forms.
Scheme handout
(The LET special form)
Code from class
Feb. 22
More LET and LET* special forms
Code from class
Feb. 23
Lab 6 SOLUTIONS!!
Feb. 27
MIDTERM EXAM!!
Covers everything through accumulators and tail recursion,
but no LET or LET*.
Feb. 29
Exam solutions; a bit more about LET and LET*
Code from class
Mar. 1
Lab 7 SOLUTIONS!!
Spring
Break
is over :(
Mar. 19
Lists and List-based Recursion
Scheme handout
(Lists) (pp. 60-62), Code
from class.
Mar. 21
More fun with list-based recursion.
Code from class
Mar. 22
Lab 8 SOLUTIONS!!
Mar. 26
More examples of list-based recursion
Code from class
Mar. 28
More examples of
recursion involving lists.
Code
from class
Mar. 29
Lab 9 SOLUTIONS!!
Apr. 2
The MERGE-SORT algorithm.
Code from class
Apr. 4
Vectors and Destructive Programming!
Code from class
Apr. 5
Lab 10 SOLUTIONS!!
Apr. 9
Vectors and custom-made data structures!
Code from class
Apr. 11
Implementing a deck of cards
Code from class
Apr. 12
Lab 11 SOLUTIONS!!
Apr. 16
Continuing to implement blackjack.
Code from class.
Apr. 18
Continuing to implement blackjack.
Code from class.
Apr. 19
Lab 12
Note: No solutions necessary for Lab 12.
Apr. 23
Using MODULES to manage the development of a complex piece of
software; BLACKJACK with a text-based or graphical user
interface.
Notes from class;
Modules example;
Blackjack code.
Apr. 25
Code & Notes from class.
Apr. 26
Lab 13 SOLUTIONS!!
Apr. 30
A little animation
Code from class