General Information
Class Meetings
Lectures: Mon/Wed/Fri, 11:00 AM - 11:50 AM, Room SCI 233
Labs: Thu, 12:30 PM - 2:30 PM, Room SCI 228
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
CSC120 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. |
Course Purpose and Student Learning Outcomes
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?" -- that is, "What problems can be solved in an automated, efficient, mechanical manner (e.g. using a 'computer')?" 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.
In particular, by the end of this course, students should be able to:
- Apply basic design methodologies to realize solutions to computational problems;
- Explain the purpose of the basic parts of a computer system, and to demonstrate the operation of the fetch-execute cycle using those parts;
- Enumerate the primitive data types and to convert such data between their everyday, "human" representation and their machine representations (binary);
- Demonstrate fundamental algorithms for the manipulation of primitive data types;
- Explain the program translation process, and to distinguish aspects such as: compilers vs. interpreters, machine language vs. high level language, object code vs. executable code, and loading vs. linking;
- Exhibit a solid understanding of the basic features of the Java programming language: object-oriented programming (classes, methods, objects), control structures (conditionals, looping, recursion), data types (arrays, strings, numbers), basic algorithms, and some advanced ideas;
- Use an integrated development environment (IDE) to translate and execute Java programs;
- Exercise fundamental problem solving skills, applicable to all disciplines;
- Obtain a general understanding of the various topics in the broad context of computing;
- Develop an appreciation of the history of computing, as well as legal and ethical dimensions.
Assessment Measures
Students will meet the learning outcomes with at least 75% success, based on performance on assignments and exams, detailed below.Hints for Success
- Start working on assignments early.
- You can't leave things to the last minute in this course - no, really, you can't.
- If you get stuck, take a break and then go back to think about it.
- Ask questions! Don't hesitate to contact me if you have any problems or don't understand something.
- Be familiar with the reading material before coming to class.
Learning to program is like learning a foreign language -- don't expect to become an expert in one semester. Just try your best and enjoy it.
Materials and Methods
Methods of Instruction
Three lectures per week and one lab. Lab exercises will be assigned each Thursday lab session and will typically be due on the following Wednesday, possibly along with additional homework problems.
Materials and Resources
- Required Textbook:
- Cay Horstmann, Java Concepts, 4th Ed.,
John Wiley, 2006. ISBN# 0-471-69704-4. (Book support website)
(Note: if you think you may continue on to take CSC121 in the Spring, you should consider purchasing Horstmann's Big Java, 2nd Ed. (John Wiley, 2006. ISBN# 0-471-69703-6 instead -- Book support website).)
- Optional Reference:
- Deitel, Harvey M. and Deitel, Paul J. Java How to Program, 6/E. Prentice Hall, 2005.
- Online Resources:
-
http://cs.berry.edu/csc120 - 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.
Official Java API Documentation - http://java.sun.com/docs/
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:
- Sun Java SDK - http://java.sun.com/j2se - the main software development kit for compiling and running Java programs. Download and install the latest version of the development kit (J2SE 5.0).
- DrJava - http://drjava.org - an integrated development environment for writing and testing your Java programs.
- 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 in Java (or other programming languages) with simple facilities for compiling and running them.
There are many other options available for Java development environments and editors. Please consult with the instructor if you have any questions in this regard or need help in any way.
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: 700pts = D, 800pts = C-, 900pts = B-, and 1000pts = A-. Full letter and + grades will be assigned for intermediate point values at the discretion of the instructor.
- Class Participation (200 points)
- Lab attendane - 70 points; Lecture attendance/in-class work - 70 points; Quizzes - 60 points
- Assignments (650 points)
-
There will be a regular series of weekly assignments throughout the course. For the most part these will consist of programming exercises/projects from the textbook. Note, 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.
The total number of assignments given over the semester (about a dozen) will add up to more than 650 points worth. Thus, if for some reason, a student does not do well on a particular assignment s/he will have ample opportunity to make up those points. (Do not, however, expect to miss more than two assignments and be able to earn full points.)
- Exams (300 points)
- There will be 3 exams, tentatively scheduled
as follows.
- Exam 1, Monday, September 25, 2006
- Exam 2, Wednesday, November 1, 2006
- Final Exam, Wednesday, December 13, 2006 (8-10am)
Schedule of Class Sessions
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, you may be allowed work 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" 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.
Instructor's Bibliography
- Biermann, Alan and Ramm, Dietolf. Great Ideas in Computer Science with Java. MIT Press, 2002.
- 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.