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:
  1. design and construction of algorithms
  2. data structures - stacks, queues, trees, lists, etc.
  3. recursion
  4. searching and sorting algorithms
  5. 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:

  1. the use of editors, compilers, linkers, debuggers, etc.
  2. problem definition and analysis
  3. top-down and bottom-up design and coding
  4. software architecture
  5. testing and debugging
  6. 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