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 the student's 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
- To 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;
- Demonstrate fundamental algorithms for the manipulation of
primitive data types;
- Apply Boolean logic to construct and evaluate simple
combinational circuits;
- Relate the fundamental tasks of an operating system;
- Explain the fundamental structure and operation of computer
networks;
- Apply basic design methodologies to realize solutions to
computational problems;
- 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;
- To obtain 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;
- To use an integrated development environment (IDE) to
translate and execute Java programs;
- To gain fundamental problem solving skills, applicable to
all disciplines;
- To obtain a general understanding of the various topics in
the broad context of computing;
- To develop an appreciation of the history of computing, as
well as legal and ethical dimensions.
Keys to Success
- Start early; work steadily; don't fall behind.
- You can't cram, unlike most other courses.
- If you get stuck, take a break and then go back to think about it.
- Don't hesitate to contact the instructor if you have any problems.
Expected Outcomes
The student will meet the objectives with at least 70% success, based
on performance on exams, labs, and assignments.
Methods of Instruction
Three lectures and one lab session per week. Please see Materials and Resources below for website
and computer hardware and software information.
Required Textbooks
- Nell Dale, Chip Weems, and Mark Headington, Programming and
Problem Solving with Java, Jones and Bartlett Publishers,
2003. ISBN# 0-7637-0490-3. (Book support website:
http://computerscience.jbpub.com/ppsjava)
- (Lab manual) Nell Dale, A Laboratory Course for
Programming with Java, Jones and Bartlett Publishers,
2003. ISBN# 0-7637-2463-7.
Online course website:
- http://fsweb.berry.edu/academic/mans/nhamid
- 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, assignments, etc. Laboratory documents and
announcements will be posted here also. Instructions for
accessing this material will be provided.
Other suggested readings:
- Official Java API Documentation -
http://java.sun.com/docs/
- The Java Tutorial -
http://java.sun.com/docs/books/tutorial/ - A practical
guide for programmers, also available in print: Mary Campione,
Kathy Walrath, and Alison Huml, The Java(TM) Tutorial: A Short
Course on the Basics, 3rd Edition, Addison-Wesley Pub Co,
2000. ISBN# 0201703939.
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. (See
Attendance Policy.)
Assignments (40%) - There will be a regular series of
weekly or biweekly assignments throughout the course. For the
most part these will consist of developing computer programs in
Java, but they may occasionally be in the form of short written
questions reinforcing the material in the lectures, readings,
and labs.
Labs (15%) - 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. Some part of the lab
exercises, which are to be completed during the assigned lab
session, will be turned in for credit.
Exams (35%) - There will be 3 exams, tentatively
scheduled as follows:
- First Exam (10%), Wednesday, September 15, 2004
- Second Exam (10%), Friday, October 22, 2004
- Final Exam (15%), Monday, December 6, 2004 (10:30AM-12:30PM)
Tentative Schedule of Classes
(We will spend about 3-4 lectures per chapter, with
scattered lectures on broader topics of computer
science.)
Date |
Topics |
Reading |
Aug 23-30 |
Introduction to computer science and computing hardware
and software |
(Lecture notes, to be posted and/or handed out) |
Sep 1-8 |
Programming and introduction
to object-oriented design |
Chapter 1 |
Sep 10-17 |
Java syntax, classes and objects |
Chapter 2 |
Sep 20-27 |
Simple types, arithmetic operators
and functions |
Chapter 3 |
Sep 29-Oct 6 |
Control flow (conditionals) |
Chapter 4, Sections 1-4 |
Oct 8-18 |
Abstraction and encapsulation |
Chapter 4, Sections 5-7 |
Oct 20-29 |
More control flow (looping) and file IO |
Chapter 5 |
Nov 1-5 |
OO design and implementation concepts |
Chapter 6 |
Nov 8-15 |
Inheritance and overloading, object IO |
Chapter 7 |
Nov 17-22 |
Error-handling and exceptions |
Chapter 9 |
Nov 29-Dec 3 |
Arrays |
Chapter 10 |
Course Policies
[Standard policies]
Instructor's Bibliography
- Nell Dale and John Lewis, Computer Science Illuminated
(Second edition), Jones and Bartlett Publishers, Sudbury, MA,
2004.
- E Garrison Walters, The Essential Guide to Computing,
Prentice Hall PTR, Upper Saddle River, NJ, 2001.
- Fowler, Martin, UML Distilled (Third edition),
Addison-Wesley, Boston, 2004.
Last modified: Wed Nov 24 12:53:30 EST 2004