CSC 120 and 120L (Section B)
Principles of Computer Science I
Fall 2005
 
Syllabus and General Information

Class Meetings

Lectures: Monday/Wednesday/Friday, 10:00 AM - 10:50 AM, Room SCI 107
Labs: Thursday, 3 PM - 5 PM, Room SCI 228

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 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.

Overview

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.

Course Objectives

Keys to Success

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 Thursday lab session and will be due on the following Wednesday, 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 (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%.

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

Instructor's Bibliography

 


This document is subject to change at any time.

Berry College