CSC 220 (Section A)
Data Structures and Algorithms
Fall 2005
 
Syllabus and General Information

Class Meetings

Lectures: Monday/Wednesday/Friday, 9:00 AM - 9:50 AM, Room SCI 233
Labs: Tuesday, 12:30 PM - 2:30 PM, Room SCI 233

Instructor

Prof. Nadeem Abdul Hamid
Office: SCI 354B
Phone: (706) 368-5632 (office)
Email:
Office Hours: Mon 11-12:30 / Tue 10-12:30 / Wed 11-12:30, 2-4 / Thu 10-12:30, 2-3 / (or by appt)

Course Catalog Description

CSC 220 Data Structures and Algorithms 3-2-4
A course in the design, implementation, and use of fundamental data structures including arrays, lists, stacks, queues, trees, and graphs. Also covered will be the use of recursion, sorting algorithms, and computational complexity analysis. Prerequisites: Grade of C or better in both CSC 121 and CSC/MAT 219.

Overview

Data Structures and Algorithms is a continuation of the introductory sequence to Computer Science (CSC 120 and 121). Ultimately every computer program that accomplishes a non-trivial task must use some sort of data structure(s). In this course we will study the fundamental dynamic data structures and related algorithms that are used at all levels of the machine hierarchy. We will learn the use of recursion, principles of data abstraction, and basic methods of analyzing algorithms. The Java programming language will be used as a tool for implementing the concepts learned in this course.

Course Objectives

Expected Outcomes

The student will meet the objectives with at least 75% success, based on performance on assignments and exams.

Methods of Instruction

Three lectures and one lab session per week. Lab exercises will be assigned each Tuesday lab session and will be due on the following Monday, possibly along with additional homework problems.

Materials & Resources

Required Textbook: Web resources: Computer hardware and compilers: The machines in Berry's computer labs will have some Java development tools installed on them. We will become familiar with the development software within the first few lab sessions of this course. Students who wish to set up a Java programming environment on their own computers may consider downloading and installing the following:

There are many other options available for Java development environments. Please consult with the instructor if you have any questions in this regard or need help in any way.

Assignments and Grading

Student grades will be determined on a standard 10% grade scale: 90% - 100% earns an A, 80% - 89% earns a B, etc., with the instructor reserving the right to apply +/- grades at his discretion. Grades will be based on the weighted average of the following course work:

Participation (10%) - Attendance and participation in class will be taken into consideration as well as in-class exercises and/or occasional (possibly unannounced) quizzes. Peer evaluations will also affect this grade. (See Attendance Policy below.)

Assignments (50%) - There will be a regular series of weekly assignments throughout the course. For the most part these will consist of developing computer programs in Java. (Click here for assignment evaluation rubric)

Labs (10%) - Each 2-hour laboratory session will involve a variety of problems, including paper-and-pencil exercises, writing computer program code, modifying program code, and/or running code and observing behavior.

Exams (30%) - There will be 2 exams, tentatively scheduled as follows. Each exam will be worth 15% of the course grade.

Syllabus and Schedule of Classes

See the course webpage (here) for list of lecture topics, readings, and assignments.

Pair Programming

You may work with a partner for the labs and programming assignments if you like. If you do, you should engage in the pair programming model, that is both of you should be sitting at a single machine, side by side. One of you is "driving," at the keyboard and mouse programming. The other is actively engaged "navigating" - following along, catching mistakes, and providing ideas. You should make sure that over the course of an assignment that you spend roughly the same amount of time each "driving" and "navigating". Similarly, during labs, you should trade roles regularly. I will periodically ask you to turn in a form rating the work that your partner does.

Note: the following are not pair programming practices:

If you are having problems working with your partner, please contact the instructor immediately. For example, if your partner stops showing up to work with you, let me know so that we can address the situation.

Course Policies



Berry College