Held Monday, January 22, 2001
Today we begin CSC151 by considering the core subject matters of the
course: problem solving, computer science, computer programming, and
- Definitions: Computer science, computer programming, computing, algorithm,
- Course basics
- Administrative issues
- Rather than telling you exactly what the class is about,
I'm going to start the class with some questions for you. I hope
the questions will help ground the class and also begin to get
you used to some aspects of my teaching style (particularly my
reliance on recitation-style work).
- What is Computer Science?
- What is Computer Programming?
- What is Computing?
- How are they similar? How are they different?
- I will give some of my own responses after I've heard some of yours.
- I'd also like you to reflect on why you're here. (I'll ask you to do
this again on the introductory
- Why are you taking this course?
- What do you expect to get out of this class?
- I expect and hope that you will find CSC151 different from any class
you've taken in the past.
- We use a different format than many classes: a collaborative,
workshop-style format. (You may have seen this format in other
introductory science courses; we do it somewhat differently.)
- Computers and computer science also require you to think differently.
I expect that you'll exercise some brain cells you may have forgotten
you have. (And after all, isn't liberal arts education an exercise
in thinking in as many ways as you can?)
- Computer Science 151 has a number of goals
- To introduce you to fundamental ideas of computer science: abstraction,
algorithms, and data
- To enhance your problem-solving skills and give you experience
in formal representation of problems and solutions.
- To introduce you to two primary paradigms of problem solving:
functional and imperative.
- Like most computer science courses, CSC151 will have both theoretical
and practical components. I hope you will enjoy relating the two.
- You may have noted that I said that we'll study two paradigms
of problem solving.
- Over the years, computer scientists have designed (discovered?)
a number of techniques for looking at how to write solutions
to problems. There are four basic ones.
- We'll visit each in terms of making cookies (or at least we'll
- Imperative: Solutions are a collection of basic
instructions with some additional sequencing.
- Sift dry ingredients.
- Stir 50 times.
- Object-Oriented: Solutions are a collection of
- Head chef: Hand bowl of ingredients to mixing sous-chef.
- Sous-chef: Upon receiving bowl of ingredients, mix.
- Functional: Solutions consist of function definitions
and function applications. It's often useful to think of
a function as a form of filter: it converts its input to
- The mixer converts separate ingredients into a consistent mush.
- The oven converts raw dough to cooked dough.
- Declarative: Solutions consists of collections of
- To bake cookies, you cook at 375 degrees F for 8 to 10 minutes.
- Chocolate chip cookies contain ...
- Please refer to the course web site
for more details.
- Teaching philosophy: I support your learning.
- Attendance: I expect you to attend every class. Let me know
when you'll miss class and why.
- Grading: I'm a hard grader. I don't grade everything.
- Course web.
- Blackboard. We'll use it for turning in homework and for discussions.
- Daily work
- Attend class, work on lab and participate in discussion.
- Finish the lab in the evening.
- Do the reading for the next class in the evening.
- The exams
- Three take-home exams during the semester. Plan to spend
ten hours on each one.
- An optional final to make up for a bad exam grade.
- Take all three exams anyway.
- The labs
- Available online.
- Being re-written as the semester progresses.
- Each week, I'll specify a few problems that you must turn in.
- The homework
- About five.
- One makeup at the end of the semester.
- Academic honesty
- Core to the academic process.
- My basic policy: Don't cheat.
- The college's basic policy: Cite carefully.
- Significant breakdowns in CSC151 last semester.
- Read my handout on
academic honesty carefully.
- Some of you have asked (explicitly or implicitly) why we use
Scheme in 151, rather than a
practical language, like C
- Because we believe in a multi-paradigm introduction, we want
a language that supports more than one paradigm. Scheme supports
imperative and functional programming (and a form of object-oriented
- Our experience shows that too much of intro courses is typically
spent on the grammar of programming languages (how to put
sentences together). Scheme has a simple and consistent grammar.
- Scheme also lets us avoid some other issues that don't contribute
to your learning.
- Scheme provides an elegant and appropriate introduction to
recursion, a key problem-solving concept. We find that
Scheme students learn recursion more quickly and better.
- Scheme is sometimes the language of choice for embedded languages.
You can program a text editor (emacs) and a sophisticated graphics
program (GIMP) using Scheme.
- We'll investigate GIMP this semester.
- Anything you can do in any other language, you can do in Scheme.
- We're in good company. MIT, the University of Chicago, Rice,
The University of Texas at Austin, Berkeley, Swarthmore,
and a number of other top institutions use Scheme as the first
language (or have done so in the recent past).
Friday, 12 January 2001
- Created generic outline format for class.
Sunday, 21 January 2001
- Finished filling in details.
Monday, 22 January 2001
- Moved lab link to next class.