CS 38: Advanced Programming

[ Last updated Term II, 1995-96 ]
Instructor: Charles Peck
E-mail: charliep@earlham.edu
Ofice: Dennis 202B, x1667
Predictable office hours: 12-5pm Monday, 12-5pm Thursday
General
Regular class sessions will meet Monday and Thursday from 2-4pm in the
Physics seminar room. Please be there and be on time. There will be
tutors available for this course, sometime during the first week of class
we will set-up regular times when they will be available in the ACL to work
with you. The tutors are there to address specific questions and guide you
to a solution, not to give you the answers. Please use them with
integrity. There will also be a lab session from 7pm-9pm one day each
week. We will decide on which evening during the first day of class.
What the Course Covers
Advanced Programming is the first upper-level course in the computer
science curriculum. It is a pre-requisite for every other upper-level CS
course. The content of this course follows the recommendations for the
course CS2, as described by the Association for Computing Machinery (ACM).
This professional association has a committee which regularly reviews the
content and structure of their model undergraduate CS curriculum and makes
recommendations about the same.
Durng the course of the term we will be covering the following major topics:
- design and construction of algorithms
- data structures - stacks, queues, trees, lists, etc.
- recursion
- searching and sorting algorithms
- algorithm analysis - efficiency, correctness, etc.
Many of the topics which we will visit during this course appear again
later in the CS curriculum; some with an entire course devoted to their
study. One of the primary goals of CS38 is to introduce potential majors
to the breadth of computer science. The second major goal of CS38 is to
give students the opportunity to learn about the processes, tools, and
techniques of computer science. This collection of things is known as
software engineering. To this end we will also touch upon more general
topics and procedures:
- the use of editors, compilers, linkers, debuggers, etc.
- problem definition and analysis
- top-down and bottom-up design and coding
- software architecture
- testing and debugging
- working with (relatively) large programs
The third major goal of CS38 is expose students to the historical, social,
and ethical context of compter science. In support of this you will be
doing library research and preparing a paper. We will also hold
discussions in class on these topics.
We will be using C as our programming language. C is a widely available
programming language which was developed in conjunction with the Unix
operating system during the early 1970's. It is appropriate for both
application programming (spreadsheets, databases, etc.) and for more
complex systems programming such as an operating system. The Unix
operating system is written in C.
The programming exercises and group project will give you an opportunity to
become familiar with the tools and techniques used to design, develop,
test, and debug software using C. You will have your choice of
environments to work in, most of you will probably use Unix on either the
NeXTs or the DECs. You can also use the Macintosh to do your labs and
project. Although the particular syntax of these tools is specific to the
environment the concepts associated with their use transcends development
environments. Like most tools the best way to become proficient with them
is to use them.
Group Project
During the second half of the term we will be working in small groups on a
relatively large software development project. Collectively you will be
responsible for the design, coding, and testing of the software. I have a
couple of ideas for what type of software we should work on, sometime
around mid-term we will take some time in class to talk about the options
and decide on a particular project(s).
Grading
Your grade in the class will be determined by your efforts in five areas:
- Class participation - 20%
- Assignments and programming labs - 20%
- Mid-term exam and final exam - 20%
- Research paper - 20%
- Group project - 20%

Copyright©1996 by Earlham College Computer Science Department.
All rights reserved.
#333
|