General Information
Class Meetings
Lectures: Mon/Wed/Fri, 9:00 AM - 9:50 AM, Room SCI 233
Labs: Tue, 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, Wed, Fri 10-11AM / Mon, Wed 2:30-4PM / Tue, Thu 9-11AM / (or by appt) |
Objectives and Outcomes
Course Catalog Description
CSC220 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. |
Course Purpose and Student Learning Outcomes
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 C programming language will be used as a tool for implementing the concepts learned in this course.
In particular, by the end of this course, students should be:
- Familiar with the design and use of the most common and fundamental data structures in Computer Science: arrays, lists, stacks, queues, trees, strings, maps, hash tables, etc.;
- Able to design and analyze algorithms that operate on the data structures above;
- Able to reason about the correctness of data structure algorithm implementations;
- Able to understand and apply data structures and algorithms provided by a programming language library;
- Able to use - and analyze the use of - recursion for problem solving;
- Familiar with the C programming language and be able to implement data structures and algorithms in it.
Assessment Measures
Students will meet the outcomes listed above with at least 75% success, based on performance on assignments and exams, detailed below.Materials and Methods
Methods of Instruction
Three lectures per week and one lab. Lab exercises will be assigned each Tuesday lab session and will typically be due on the following Monday, possibly along with additional homework problems.
Materials and Resources
- Required Textbooks:
- Richard Gilberg and Behrouz Forouzan, Data Structures: A Pseudocode Approach with C, 2nd Ed., Thomson Course Technology, 2005. ISBN# 0-534-39080-3 (Book support website).
- Brian W. Kernighan and Dennis Ritchie, The C Programming Language, 2nd Ed., Prentice Hall, 1988. ISBN# 0-13-110362-8.
- Online Resources:
-
http://csserve.berry.edu/csc220 - It is your responsibility to check the web site for this course regularly (i.e. daily) throughout the semester, as it will be regularly updated with announcements, lecture notes, source code, assignments, etc.
The machines in Berry's computer labs will have some C 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 C programming environment on their own computers may consider downloading and installing the following:
- Windows C compiler and utilities - http://www.mingw.org/
- SSH Secure Shell Client - http://www.ssh.com/support/downloads/secureshellwks/non-commercial.html - for terminal login to the CS server.
- SciTE (Scintilla Text Editor) - http://www.scintilla.org/SciTE.html - an alternate, no-nonsense editor for writing programs with simple facilities for compiling and running them.
Evaluation Components and Grading Scale
Student grades will be determined by a system of points over the course of the semester. Points will be assigned for various components of the course as detailed below. The minimum point values to attain a particular grade are: 480pts = D, 560pts = C-, 640pts = B-, and 720pts = A-. Full letter and + grades will be assigned for intermediate point values at the discretion of the instructor.
- Attendance and participation (50 points)
- Lab and Quizzes (100 points)
- Assignments (500 points)
-
There will be a regular series of weekly assignments throughout the course. For the most part these will consist of homework exercises and programming projects from the textbook. Notice, the major portion of your grade will be based on these assignments, so you must not fall behind in this respect. You may expect to spend 4 to 8 hours per week outside of class working on the programming assignments. If you find yourself spending more than 10 hours per week on the assignments, please contact the instructor.
- Exams (150 points)
- There will be 3 exams, tentatively scheduled
as follows. Each exam will be worth 50 points.
- Exam 1, Friday, September 22, 2006
- Exam 2, Wednesday, November 15, 2006
- Final Exam, Friday, December 8, 2006 (10:30am-12:30pm)
Schedule of Classes
See the course webpage (here) for a list of tentative lecture topics, readings, and assignments.
Course Policies
Attendance Policy
Please see the Berry College Viking Code for "Class Attendance Policies" (pp 10-11, 2004-2005 edition). Missing three (3) or more classes without justifiable reason (and appropriate documentation) will be considered excessive absences and an alert form will be sent to the proper authorities.
Attendance records will be kept by the instructor. Sign-in sheets will be circulated every class period and attendance records will be kept from the sign-in sheet. If your name is not readable on the list, you will be marked absent. Signing for someone else will be considered a serious breach of academic integrity. Similarly, endeavoring or engaging in any method to sign your name, or have your name signed, when you are absent will be treated as a breach of academic integrity.
Academic Integrity
Students are expected to have read carefully and understood the rules governing breaches of academic integrity that are to be found in the Viking Code (pp 16-17) and the Course Catalog (pp 27-28, 2003-2005 edition).
For this course, any work that you submit must be entirely your own (unless I specifically allow you to work in pairs/groups on a particular assignment). Do not copy or use other students' submission or any other existing code (including code on the Internet). Copying programs and code from other sources and trying to just make minor changes therein will be detected and can result in severe penalties, up to and including an F in the course. You are always welcome to consult me for assistance - in person, by email, phone, etc. - if you are stuck.
As a general rule, if you do not understand what you are handing in, something is probably wrong. If you have given somebody some code simply so that it can be used in that person's assignment, you are probably cheating.
Late Work
Late work will not be accepted unless an excuse is obtained prior to the day on which the assignment is due. This policy will be waived only in an "emergency situation" with appropriate documentation and/or prior arrangement with the instructor.
(Note: "I couldn't get the computer to work" or "My email/internet was not working", etc. are not acceptable excuses for late work (in general -- if the Berry network experiences major downtime I will adjust deadlines). If you start working on assignments early, instead of at the last minute, you will have time to ask me about any technical difficulties you are having.)
Disabilities Accommodation Statement
Students with disabilities who believe that they may need accommodations in this course are encouraged to contact the Academic Support Center in Krannert Room 326 (Ext. 4080) as soon as possible to ensure that such accommodations are implemented in a timely fashion. Failure to contact the Academic Support Center will constitute acknowledgement that no disability exists and that no accommodations are needed.