[ Home | Syllabus | Code from lecture | Assignments | Exams ]

# Syllabus

## 1. General Information

• Lecture:
• Days: Monday and Wednesday
• Time: 4:00-5:15 PM
• Room: SB 140
• Section: 1412
• Lab / Discussion:
• Days: Thursday
• Time: 4:00-5:15 PM
• Room: SE 045
• Section: 1413
• Exams (Location to be determined):
• Midterm 1: 7:30-9:00 PM, Thursday, October 5
• Midterm 2: 7:30-9:00 PM, Thursday, November 16
• Final Exam: 2:45-4:45 PM, Friday, December 15
• Instructor: Amr Sabry
• E-mail: sabry@cs.indiana.edu
• Phone: 855-3668
• Office Hours:
• Wednesday, 2:30-3:30 PM, Lindley Hall 230C
• Friday, 11:00-12:00 PM, Lindley Hall 230C
• and by appointment
• UI: Craig Citro
• Web page: http://www.cs.indiana.edu/classes/h211/home
• Newsgroup: ac.csci.h211

## 2. Course Description

H211 Introduction to Computer Science, Honors (4 cr.)
Prerequisites: two years of high school algebra or Mathematics M014.
A first course in computer science for those intending to take advanced computer science courses. Introduction to programming and to algorithm design and analysis. Using the Scheme programming language, the course covers several programming paradigms.

The only prerequisite for this course is high school algebra. If you did not like algebra, relax. We will not use algebra much, if at all, in this course. This course will, however, draw upon the same analytical thinking and formal reasoning skills that are cultivated in the study of algebra.

For example, in algebra, we learned to solve problems by: (1) identifying and formally expressing the relations between known and unknown quantities, and (2) solving the resulting systems of equations or inequalities to find the unknowns. To solve equations, we manipulated symbols (numbers, variables, relations like ``='', and operators like ``+'') according to various rules (usually in the form of laws or theorems).

In this course, we begin our study of computation. We will realize computations on machines that manipulate symbols according to fixed rules. While much of our time will be spent learning to program, we will also spend time thinking about our solutions: are they correct? are they efficient?

We use the Scheme programming language in this course because Scheme is highly expressive, yet easy to learn. Because it is highly expressive, we can explore different programming paradigms all within the same langauge. Since Scheme is easy to learn, we can spend more time using the language to solve problems.

### Philosophy

• Learning is an active process.
• Experience is the best teacher.
• Successful students are internally motivated.
This is not a course based on rote memorization. While certain patterns and principles do reappear, we often apply them in novel situations in order to solve new problems. Developing skill in problem solving takes practice. Homework assignments will provide ample opportunity to refine these skills.

### Goals

• Learn to design, implement, and analyze data structures and algorithms.
• Study properties of programs such as correctness and efficiency.
• Learn tools of the trade such as abstraction and recursion.
• Develop software that solves real problems.
• Understand strengths and weaknesses of different programming paradigms.
These are ambitious goals. In fact, many of these goals are the subject of entire courses in the Computer Science curriculum. Naturally, we cannot hope to do justice to this list in an introductory course. We will, however, attempt to develop skills and gain experience that will be useful as you continue to study Computer Science.

## 3. Lecture Topics

We will start pretty much following the outline of C211 but at a faster pace. This will give us time to explore more topics like object-oriented programming, types, etc.

## 4. Materials

### Textbook

• Scheme and the Art of Programming, by G. Springer and D. Friedman, published by MIT Press/McGraw Hill, 1989 (now in its seventh printing). Source code from the book is available here.

### Computer Accounts

If you do not yet have a Network ID, create one by visiting any UITS student computer cluster and asking for a ``Starter Kit.'' The instructions tell you how to run the Starter Kit, which generates a Network ID that is functional immediately. You will need to know your registration pin number.

If already have a Network ID, but you have forgotten your password, go to IMU M084 to have the password reset. You will need to show a picture ID.

If you have not already done so, create an account on the ``IUB-NT Domain''. Accounts are created at http://account.ucs.indiana.edu. For more information about computing and accounts available from UITS, visit http://www.indiana.edu/~stiu.

### Scheme Implementations

Two implementations of the Scheme programming language are available on most of the computers on campus. Both may be freely downloaded by students wishing to work at home. Homework will be evaluated using Chez Scheme, but either should be fine.
• DrScheme provides a user-friendly interaction environment with features specifically designed to help beginning programmers avoid or recover from mistakes.
• Binary release is available for many machines including Intel machines running Linux or Windows 95/98/NT and PowerPC or 680x0 machines running MacOS.
• features spiffy graphical interface and syntax checking
• Some quirks.
• A quick introduction to DrScheme
• Petite Chez Scheme.
• Binary release evailable for Intel machines running Linux or Windows 95/98/NT.

### Purpose

Grades are provided as diagnostic tools. Do not view grades as ends in themselves. Instead, use homework and exam grades to gauge your understanding of the material and to identify areas that need more work. Test scores from past semesters suggest that the material becomes more challenging as the course progresses. Come see us in office hours at the first sign of trouble.

Remember that you are here for an education, not a grade. Concentrate on understanding the material and the grades should fall into place.

You can access your grades electronically via the BEST Post'em Service. An announcement will be posted as soon as the gradebook is ready for access.

Course grades will be determined as follows:
WeightComponent
10$%$Homework
25$%$Exam 1
30$%$Exam 2
35$%$Final Exam
It may appear that the homework contributes only 10$%$ to your final grade. Do not be misled. Completing the homework is the best way to prepare for the exams. In particular, material introduced in the homework is fair game for exams even if this material is not explicitly covered in lecture.

## 6. Policies

• Late work is not accepted.