CSC 120 and 120L (Section B) |
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 120 Principles of Computer Science I | 3-2-4 |
An introduction to the fundamental principles of computer science. Emphasis on algorithms and computational problem solving, fundamental programming constructs, data representation and storage, language translation, software development methodologies, operating systems, networks, and social contexts. Prerequisites: None. |
This is the first course in the Computer Science (CS) academic program. The fundamental question permeating all of Computer Science is, "What can be (efficiently) automated?" Throughout this course we will introduce the tools and techniques used in the discipline of computing. Aspects of design, theory, and experimentation will be addressed. An overview of central issues and concepts of the field will be offered, including software development, specifications, testing, data organization, machine architecture, history of computing, professional organizations, computer security, and computing ethics.
One of the primary goals of this class will be to learn programming. For this we will be using the Java programming language. As the best way to learn programming is to write programs, much of your time will be spent on this particular activity. During lectures, we will also spend a significant amount of time reviewing and studying Java source code examples.
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 Thursday lab session and will be due on the following Wednesday, 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 (40%) - 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 (40%) - There will be 3 exams, tentatively scheduled as follows. Each exam will be worth 15% of the course grade, with the lowest-score exam counted as only 10%.
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. 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, 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.
(Note: "I couldn't get the computer to work" is not an acceptable excuse for late work. 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: 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.
Deitel, Harvey M. and Deitel, Paul J. Java How to Program, 6/E. Prentice Hall, 2005.
Musican, Dave. Online course materials: http://www.mathcs.carleton.edu/faculty/dmusican/index.html. Accessed July 2005.
Williams, Laurie A. and Kessler, Robert R. All I really need know about pair programming I learned in Kindergarten. Communications of the ACM, 43:5, 2000, pp 108-114.
Zelle, John. Python Programming: An Introduction to Computer Science. Franklin, Beedle & Associates, 2003.