Computer Science 120

Fundamentals of Computer Science I

9:40 – 10:40  MWF,  Trex 363, Fall 2005

2:50 – 5:50 TH Trex 263


 

Instructor:

Dr. Stephen Hughes

Office

Trexler 365-C

e-mail: 

hughes@roanoke.edu

Phone

375-4501

Office Hours:

Mon 2:00 – 4:00,  Wed 2:00 – 4:00     

Also by appointment or open door

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.

 

Course Content

Text

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

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.

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.

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.

Quizzes & Exams

Short quizzes will be given weekly to assess your progress in the course.   These are designed to ensure that you are keeping up with the pace of the class and to give you a sense of the level of mastery that is expected.  Quizzes will generally be given at the beginning of class, and not necessarily on the same day of the week.   No make-up quizzes will be offered, however, the lowest 2 quiz scores will be dropped when calculating your final grade.

MCSP Conversations

The Math, Computer Science and Physics department offers a series of discussions that appeal to a broad range of interests related to these fields of study.   These co-curricular sessions will engage the community to think about ongoing research, novel applications and other issues that face our discipline.  Sessions will be held on the following dates this semester:

                        Sept 14                                    Sept 28                        Oct 12

                        Nov 9                                      Nov 16                        Nov 30

Members of this class are invited be involved with all of these meetings; however, participation in at least two of these sessions is mandatory.   For each of the required sessions, students will submit a one-page paper reflecting on the discussion within one week.   This should not simply be a regurgitation of the content, but rather a personal contemplation of the experience.   

  <>
 
<>Course Topics (Schedule Tentative)

Week of

Topics

Lab

Sections in Text

Aug 31 (W,F)

·       Overview of Roanoke College Network

·       Basic terminology

·       The Linux operating system

·       UNIX file structures

Introduction to Linux and Emacs

1.1 - 1.3

Sept 5

·       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 12

·       Numeric data types and expressions

·       Classes and class libraries

Writing simple programs using expressions

2.3 - 2.6; 3.1 - 3.5

Sept 19

·       Classes and class libraries, cont.

·       Introduction to applets and graphics

Writing programs using classes;
Writing applets

2.7 - 2.9

Sept 26

·       TEST #1

·       Representation of numeric data (binary, octal, hex; general concept of a base; twos complement)

HTML, applets, and graphics

Appendix B and
supplementary material
3.8 - 3.11

Oct 3

·       Writing classes and methods

·       Graphical Objects

Writing classes

4.1 - 4.8

Oct 10

·       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 17

·       Fall Break

Oct 24

·       Logic, continued

·       Application of logic to computer circuits

Programming with selection statements

5.4 & supplementary material

Oct 31

·       TEST #2

·       Introduction to loops (while statements)

Programming with loops

5.5

Nov 7

·       Other looping structures

More programming with loops

5.6 - 5.8

Nov 14

·       Loop wrap-up

·       Events, dialog boxes and buttons

·       Graphics: Components, Containers, & Images

More programming with loops; graphics programming

5.9 - 5.12

Nov 21 (M)

·       TEST #3

Thanksgiving - No lab

 

Nov 28

·       Classes and methods, more depth...

·       Design

·       Parameters revisited.

·       Testing

·       GUIs - Interfaces and Events

More programming with classes and methods

6.1 - 6.9

Dec 5

·       Dialog Boxes

·       Wrap-up

More practice programming with classes; tracing parameters

 

Grading

The course grade will be based on 3 tests, lab work (including pre and post lab assignments), programming projects, and a comprehensive final examination.

30%

Tests

 

10%

Quizzes

15%

Lab

 

5%

MCSP Conversation

20%

Projects

 

20%

Final Exam

 

 

B+.... 87-90

C+.... 77-80

D+.... 67-70

Below 60

A....... 93-100

B....... 83-87

C....... 73-77

D....... 63-67

F

A-..... 90-93

B-..... 80-83

C-..... 70-73

D-..... 60-63

 

 

Test Dates:

Test #1

Monday, September 26

 

Test #2

Monday, October 31

 

Test #3

Monday, November 21

 

Final Exam

Thursday, December 15 (8:30 am)

 

 

Course Policies

Academic Integrity

Honesty and integrity are qualities we respect in ourselves and in others. Therefore, you are expected to be fully aware of your responsibility to maintain the highest degree of integrity in all of your work.   It is accepted that you have read and understood the standards for academic integrity at Roanoke College. 

By submitting work under your name, you are indicating that you have completed the assignment.   This means that you should be able to completely explain all the details of your work, i.e. every line of code in computer programs or formulas in spreadsheets.  Failure to be able to account for your decisions (to my satisfaction) will result in referral to the Academic Integrity Council.

All students must abide by the Guidelines for Computer Use as stated on page 15 of the Academic Integrity Handbook. Failure to do so will result in involuntary withdrawal from the course

Attendance Policy

Class attendance is vital to your success in this course; material covered during missed sessions is the responsibility of the student.  Conversations held in class illuminate the published class materials and are subject to evaluation on subsequent tests and quizzes.   Moreover, quizzes and in-class assignments are not available for make-up.

Late Assignments

It is understood that circumstances conspire against us all; when 3 term papers and a programming assignment are due within a 24-hour span, something has to give.   Therefore, you have 4 late days that are penalty-free to use at your discretion (i.e. you may use them on a single assignment, or distribute them over multiple assignments).  Any submission beyond your grace period will be penalized 20% per day.  Electronic “glitches” do not waive your responsibility to submit your work in a timely manner.

Office Hours

Office hours are an opportunity for you to clarify details you may have missed in class.   They are not a place to get answers on the assignment.  If you come to office hours with a problem on the assignment, you should come prepared to answer questions, as well as asking them.  Additionally, you need to make sure that you have access to an electronic version of your code.

Electronic Devices

Cell phones and pagers must be turned off prior to entering the classroom or lab.

The use of any electronic device during a quiz or exam is strictly prohibited. This includes PalmPilots, Pocket PCs, and Blackberrys. Any use of such device during a quiz or exam will be considered a breach of academic integrity. Basic handheld calculators may be used on certain quizzes and exams only when announced by the instructor.