[ Home
| Syllabus
| Code from lecture
| Assignments
| Exams
]
Syllabus
Contents
- General Information
- Course Description
- Lecture Topics
- Materials
- Grading
- Policies
- 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
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.
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.
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.
References
- The Little Schemer, Fourth Edition, MIT Press, 1996,
by D. P. Friedman and M. Felleisen, is an excellent introduction
to recursion and is designed for self study.
- The Scheme Programming Language, Second Edition,
Prentice Hall, 1996, by R. Kent Dybvig,
is an excellent language reference.
- The Revised Report on the Algorithmic Language Scheme,
is the official language definition.
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.
- SWL provides a simple graphical read-eval-print
loop for Petite Chez Scheme. Download a binary release for
your machine here.
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.
Electronic Gradebook
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
Course grades will be determined as follows:
| Weight | | Component |
| 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.
- Late work is not accepted.
- Course grades are solely determined by homework and test grades.
- Except in extraordinary circumstances, make-up examinations are not
given.
- An incomplete (I) final grade will be given only by prior arrangement
in truly exceptional circumstances conforming to university and
departmental policy in which the bulk of course work has been
completed in passing fashion. A student's desire to avoid a poor
grade is not a satisfactory reason for receiving an incomplete.
Read the
Statement on Academic Integrity
to be sure you understand the rules that govern all courses offered
by the Computer Science Department.
[ Home
| Syllabus
| Code from lecture
| Assignments
| Exams
]