CSC 220 (Section A) |
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) |
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. |
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.
The student will meet the objectives with at least 75% success, based on performance on assignments and exams.
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.
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.
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.
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.
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.
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.
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, you may work on assignments in pairs, unless otherwise specified. Other than this collaboration, any work that you submit must be entirely your own. 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.
Disabilities: 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.