CPSC 120: Fundamentals of Computer Science I

Fall 2004


Instructor: Mr. Philippe Moore Office Hours: Mon: 1:10 - 2:10 pm
Office: 365-C Trexler Tues: 10:10 - 11:40 am
Phone: 375-4901 Wed: 2:20 - 3:20 pm
E-Mail: pmoore@roanoke.edu Thurs: 1:10 - 2:40 pm
Also by appointment or drop in

Course Objectives: This course is the first in a three course sequence designed to introduce students to the fundamental concepts of computer science including the underlying foundations from discrete mathematics. The course focuses on the design of algorithms to solve problems, the basics of mathematical logic, and the implementation of the algorithms in the programming language Java. Students will learn the basic control structures and data structures provided by the Java language, the concepts of objects, classes and methods, and will gain experience in the use of objects (Java classes) in programming and problem-solving. Students will gain familiarity with the UNIX operating system as they develop programs on systems running Linux, a version of UNIX for personal computers.

Prerequisites: There are no formal prerequisites for this course; however, a strong aptitude for logic usually predicts success in the course. Prior experience with programming or with Linux is not necessary.

Text: Java Software Solutions: Foundations of Program Design, 4th Edition, by John Lewis and William Loftus, Addison-Wesley, 2004.

Course Topics (Schedule Tentative)
Week of Topics Lab Sections in Text
Sept 1
  • Overview of Roanoke College Network
  • Basic terminology
  • The Linux operating system
  • UNIX file structures
Introduction to Linux and Emacs 1.1 - 1.3
Sept 6
  • Overview of computer architecture, algorithms,programming, programming languages, object-oriented programming, and systems software
  • Java programs - basic structure and style (documentation, naming conventions, and use of white space)
  • Introduction to objects, output, variables, and assignment statements in Java
Editing, compiling, and modifying elementary Java programs 1.1 - 1.6; 2.1 - 2.2
Sept 13
  • Numeric data types and expressions
  • Classes and class libraries
Writing simple programs using expressions 2.3 - 2.6; 3.1 - 3.5
Sept 20
  • Classes and class libraries, cont.
  • Introduction to applets and graphics
Writing programs using classes;
Writing applets
2.7 - 2.9
Sept 27
  • TEST #1
  • Representation of numeric data (binary, octal, hex; general concept of a base; twos complement)
  • Wrapper Classes
  • Graphics: Components, Containers, & Images
HTML, applets, and graphics Appendix B and
supplementary material
3.8 - 3.11
Oct 4
  • Writing classes and methods
  • Graphical Objects
  • GUIs - Interfaces and Events
Writing classes 4.1 - 4.8
Oct 11
  • Introduction to logic (logic operations, truth tables, laws of logic)
  • Boolean expressions and if statements in Java
More programming using classes; GUI programming with listeners; Selection statements 5.1 - 5.3 and supplementary material
Oct 18 Fall Break !!!!
Oct 25
  • Logic, continued
  • Application of logic to computer circuits
Programming with selection statements 5.4 & supplementary material
Nov 1
  • TEST #2
  • Introduction to loops (while statements)
Programming with loops 5.5
Nov 8
  • Iterators & other looping structures
More programming with loops 5.6 - 5.8
Nov 15
  • Loop wrap-up
  • Events, dialog boxes and buttons
More programming with loops; graphics programming 5.9 - 5.12
Nov 22
  • TEST #3
Thanksgiving - No lab
Nov 29
  • Classes and methods, more depth...
  • Design
  • Parameters revisited.
  • Testing
More programming with classes and methods 6.1 - 6.9
Dec 6
  • Wrap-up
More practice programming with classes; tracing parameters  

Lab: This course has a required three-hour lab every Thursday afternoon from 2:50 until 5:50. The purpose of the lab is to give the student a structured experience in software design, implementation, and testing, and to increase the student's ability to use and understand the tools available for software development in the Linux environment. For each lab, there will be a pre-lab assignment designed to prepare the student for lab. The assignment must be handed in at the beginning of lab. Unless otherwise specified, the lab itself must be done during the lab session and turned in before leaving. Associated with most labs will be a short post-lab assignment designed to reinforce lab concepts. Typically the post-lab assignment will be due the second class period following the lab. Late lab work (including pre-lab and post-lab hand-ins) will receive no credit.

Programming Projects: Programming projects are designed to give the student the opportunity to put into practice the problem solving and programming skills they have learned. As such they are one of the most important aspects of the course both for student learning and for assessment. There will be 4 - 6 projects during the semester to be handed in for a grade. You are encouraged to start on your projects immediately when assigned and get help from the instructor as needed.

Important: Projects are to be done individually. You may ask class members, lab assistants, and others for help with system questions (e.g., "How do I save a file in emacs?", "How do I run my Java program?") or general information about a topic covered in class (e.g. "What is the symbol for boolean AND?") provided you can do so without divulging or receiving information specific to the solution of the programming project. You may not discuss any aspect of the design or coding of a programming project with anyone except me. This policy will be strictly enforced; see the section on Academic Integrity below.

Late Policy for Projects: Unless otherwise specified, projects are to be turned in by 4 pm on the due date. Ten percent per calendar day (24 hours) will be deducted for late work; work more than 5 days late will receive no credit. If you anticipate being unable to meet a deadline, talk to me before the deadline; in extenuating circumstances we may be able to make special arrangements.

Attendance Policy: Class attendance is a very important aspect of a student's success in this course. The student is expected to attend every class and lab and is accountable for any missed classes and labs.

Grading Policy: The course grade will be based on 3 tests, lab work (including pre and post lab assignments), programming projects, and a comprehensive final examination. The course grade is determined using the following weights:

tests.....40%       lab.......15%       projects.......20%       final exam......25%

Test Dates: Test #1 Monday, September 27
Test #2 Monday, November 1
Test #3 Monday, November 22
Final Exam Tuesday, December 14 (2:00 - 5:00 pm)

Grading Scale: 93-100A        83-86B        73-76C        63-66D
90-92A-        80-82B-        70-72C-        60-62D-
87-89B+        77-79C+        67-69D+        below 60F

Make-up Policy: Everyone is expected to take tests and the exam and do labs at the scheduled time. Make-ups will be given only for legitimate, documented absences that the instructor has been notified of ahead of time. Make-up tests, if given, may be oral.

Special Needs: If you are on record with the College's Special Services as having special academic or physical needs requiring accommodations, please meet with me as soon as possible. We need to discuss your accommodations before they can be implemented. Also, please note that arrangements for extended time on exams and testing in a semi-private setting must be made at least one week before the exams. If you believe you are eligible for accommodations but have not yet formally contacted Special Services, please call 375-2248 or drop by the Office of Academic Services in the Resource Development Building (across Clay Street from Crawford Hall).

Academic Integrity: All tests, exams, and programming projects are to be the work of the individual student. You are encouraged to get help from the instructor if you need help with any aspect of the course including programs and assignments. Student assistants, tutors, and classmates may help you in the operation of the computer but not with the substance of any work, other than lab work, that is to be turned in for a grade. They may help you understand course concepts but may not show you how to do any particular aspect of a programming project. Students may discuss lab work (including the pre and post lab assignments) and help each other out but in all cases the work you turn in must be your own. Copying someone else's work or turning in someone else's work is NEVER allowed. Using someone else's work or ideas as your own is plagiarism and an academic integrity offense. Examples of academic integrity violations include copying a program or part of a program (even one line) from someone else, writing code for someone else, telling someone else how to solve a problem or having someone tell you how to solve a problem. Discussion among students about programming projects should be limited to general concepts, not specific aspects of how to complete the work.

Electronic Devices and Academic Integrity: All cell phones and pagers must be turned off prior to entering the classroom or lab. The use of any electronic device during a test or quiz is prohibited. This includes cell phones, PalmPilots, Blackberrys, PocketPCs, and laptops. Any use of such a device during a test or quiz will be considered a breach of academic integrity. Handheld calculators may be used only with the permission of the instructor, and when permitted, may not be shared by students (each student must have his/her own).

Computer Use Policies: All students must abide by the Computer Use policies of Roanoke College. Failure to do so will result in involuntary withdrawal from the course.