CPSC 170: Fundamentals of Computer Science II

Spring 2004

Instructor:Dr. Adrienne Bloss Office Hours: Mon 4:00-5:00
Office: 365-C Trexler Wed 2:30-3:30
Phone: 375-2434 Tues, Thurs: 1:30-2:30
E-Mail: bloss@roanoke.edu Also by appointment

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.

Java Software Solutions: Foundations of Program Design, 3rd Edition, by John Lewis and William Loftus, Addison-Wesley, 2003.
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. Late lab work (including pre-lab and post-lab assignments) will receive no credit unless special arrangements have been made.

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.

Important: 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.

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

Attendance Policy: Class attendance is crucial for success in this course. Students are expected to attend every class and lab and are accountable for any missed classes and labs.

Course Topics and Schedule (Tentative)

Week of Topic Sections in text
Jan 12 Arrays L&L 6.0-6.1
Jan 19 Sorting (selection, insertion)
Searching (linear, binary)
2D arrays
L&L 6.2-6.4
Jan 26 Computational complexity
Functions (poly, exp, log)
Applications in searching, sorting
L&C 1.6, class notes and handouts
Feb 2 Inheritance and abstract classes; GUIs
** TEST 1 **
L&L Ch 7, 9
Feb 9 More inheritance
L&L 7.6,7.7, Ch 9
Feb 16 Mathematical induction
Class notes and handouts
Feb 23 Recursion
** TEST 2 **
L&L Ch 11
March 1 !!!!!!!! Spring Break !!!!!!!!
March 8 Recurrence relations Class notes and handouts
March 15 Software engineering, collections L&C Ch 1, 2
March 22 Linked structures L&C Ch 3
March 29 Stacks
** TEST 3 **
L&C Ch 6
April 5 Queues and lists
L&C Ch 7, 8
April 12 Exceptions and IO Streams L&L Ch 8
April 19 Wrap-up and catch-up

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 will be determined using the following weights:

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

Tentative Test Dates: Test #1 Friday, Feb 6
Test #2 Friday, February 27
Test #3 Friday, April 2
Final Exam Friday, April 23 (8:30 - 11:30 am)

Test dates are subject to change with at least one week's notice.

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 of which the instructor has been notified of ahead of time. Make-up tests, if given, may be oral.

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 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 (besides labs) should be limited to general concepts, not specific aspects of how to complete the work.

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.