CPSC170A:  Fundamentals of Computer Science II
Spring 2006



Instructor: Dr. Stephen Hughes
Time: Lecture:  MWF  9:40-10:40; Trexler 363
Lab:        Tues    2:50 - 5:50; Trexler 263


Course Objectives
This course is part two of a three part introduction to the discipline of computer science. The course focuses on the design and use of data structures and algorithms and their implementation in the programming language Java. Programming topics include arrays, linked structures, lists, stacks, queues, recursion, and object-oriented programming. Theoretical topics include computational complexity and mathematical induction, which will be used to reason about algorithms and programs.


Course Content

Texts
Java Software Solutions: Foundations of Program Design, 4th Edition, by John Lewis and William Loftus, Addison-Wesley, 2005.
Java Software Structures: Designing and Using Data Structures, by John Lewis and Joseph Chase, Addison-Wesley, 2004.

Lab
This course has a required three-hour lab every Tuesday afternoon from 2:50 until 5:50. The purpose of the lab is to give the student a structured experience in software design, implementation, testing, and measurement, and to increase the student's ability to use and understand the tools available for software development in the Linux environment. Some labs will have a pre-lab assignment designed to prepare the student for lab. Pre-lab assignments must be handed in at the beginning of lab. Unless special arrangements have been made, the lab itself must be done during the lab session and turned in before leaving. Some labs will have a 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-5 projects during the semester to be handed in for a grade. Students are encouraged to start on projects immediately when assigned and to get help from the instructor as needed.

Quizzes & Exams
Short quizzes will be given regularly 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 on Mondays.   No make-up quizzes will be offered.

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:

You 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, you must submit a one-page paper reflecting on the discussion.  This should not simply be a regurgitation of the content, but rather a substantive personal contemplation of the experience.   These papers are due within one week of the session.   


Course Topics and Schedule 

Week of Topic Sections in text
Jan 16 Arrays L&L 7.0-7.7
Jan 23 Inheritance and abstract classes; GUIs
L&L 8.1-8.5
Jan 30 Polymorphism
Searching (linear, binary)
Sorting(selection, insertion)
L&L 9.1-9.6
class notes and handouts
Feb 6 More searching and sorting
** TEST 1 **
L&L Ch 9
Feb 13 Computational complexity
Functions (poly, exp, log)
Applications in searching, sorting
Class notes and handouts
Feb 20 Recursion
L&L Ch 11
Feb 27 Exceptions
** TEST 2 **
L&L Ch 10
March 6 !!!!!!!! Spring Break !!!!!!!!
March 13 Mathematical induction Class notes and handouts
March 20 Recurrence relations Class notes and handouts
March 27 Software engineering, collections L&C Ch 1, 2
Apr 3 Linked structures
** TEST 3 **
L&C Ch 3
April 10 Stacks
L&C Ch 6
April 17 Queues and lists
L&C Ch 7, 8
April 24 Wrap-up and catch-up

Grading
The course grade will be determined using the following weights:

30%
Tests
10%
Quizzes
15%
Labs
5%
MCSP Reflections
20%
Projects
20%
Final

Tentative Test Dates: (Test dates are subject to change with at least one week's notice.)
   
Test #1 Friday, Feb 10

Test #2 Friday, Mar 3

Test #3 Friday, April 7

Final Exam Wednesday, April 26 (8:30 - 11:30 am)

Grading Scale: 93-100 A        83-86 B        73-76 C        63-66 D

90-92 A-        80-82 B-        70-72 C-        60-62 D-

87-89 B+        77-79 C+        67-69 D+        below 60 F




Course Policies

Collaboration
Projects are to be done individually. Students 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 they can do so without divulging or receiving information specific to the solution of the programming project. Students 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.  Under no circumstances should there ever be an electronic transfer of code between students in the class.

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. 

In the electronic age, source code is often available on the web or through CD-ROMs that supplement textbooks.  If you use code from any other source, you are required to cite the source by adding comments to the top of your files.  Moreover, 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

Late Assignments
I understand that circumstances conspire against us all, and when 3 term papers and a programming assignment are due within a 24-hour span, something has to give.   If you need to hand in an assignment late, you must contact me via e-mail 24 hours in advance of the due date to negotiate a new submission date.  Any late submission without prior approval will be penalized 10% per day.