63.252: Computer Science II

SYLLABUS


Course description

This course continues CS I’s study of problem solving, algorithm design, and debugging. The central content of CS II consists of new programming and programming-language concepts and intermediate-level software development skills such as program design and debugging.

The course will focus on programmer-defined data types, including collections. We will discuss structure types, classes, file streams, arrays, and pointer and list-node types. We will introduce searching and sorting of arrays. CS II students will acquire skills in building larger programs and verifying their correctness. We will begin a discussion of data structures.

CS II starts with an expanded review of material from the CS I introductory course: C and C++ operators, loops, subprograms, structure types, and classes.

We will define collections stored on disk and in memory, including arrays of structures to implement the database concept of a relation.

We will define pointer types, dynamically allocate space for data items, and use these techniques to build linked lists.

Debugging is an important programming skill, developed in this course and required for success in programming. We will emphasize skills like tracing that help reveal the locations of programming errors.

CS II includes two topics, on programming languages and discrete probability, in which we will relate computer-science-related mathematics to some programming problems.

We will tie the topics together with a programming project that you will add to in most of the nine topics of the course.

CS II is a rigorous and demanding course with heavy emphasis on lab work with intermediate-level programming problems.

Prerequisites

C minus or better in 63.152, Computer Science I and 43.123, College Algebra. (Students who earned a grade below B minus in CS I will need to do extra review work to succeed in CS II.)

CS I level basic skills

1.       Write code to implement a given flowchart;

2.       Solve a problem that requires a nested loop;

3.       Define subprograms with parameters;

4.       Define a structure type;

5.       Perform simple operations on strings;

6.       Perform file I/O;

7.       Trace a simple program to find and fix bugs.

Performance objectives

·    To attain a level of debugging skill sufficient to handle large programming projects

·    To master parameter passing and return values

·    To define simple abstract data types or classes

·    To open, read from, and write to text files

·    To distinguish text files from random-access files

·    To define and manipulate arrays, including collections of objects and two-dimensional arrays

·    To implement some search and sort algorithms and state their expected running time

·    To define pointer variables and allocate data items dynamically

·    To work with stacks, queues, and linked lists

·    To use separately compiled source files

Textbooks 

Use your CS I C++ textbook or another academic C++ textbook by an academic publisher.

Optional support from Chapters 8-12 and 14 of Keil/Johnson, C++: Statements, Data, Functions, Objects (manuscript).

Reading textbook material related to the course topics is vital.

To contact instructor:

Office hours (Hemenway Hall 318A):

     M, W 9:30-10:30 a.m.; M 2:30-3:30 p.m.

Telephone: (508) 626-4724

Email: dkeil@frc.mass.edu

URL: www.framingham.edu/faculty/dkeil

Compilers and network accounts

A C++ compiler is installed or installable on student laptops and is available in the FSC student computer labs. To do programming assignments, you may use any computer with a C++ compiler installed. As a student registered for CS I, you have a network account on the FSC server.

Classroom format

Classroom will center on lecture (with slides), discussion, and problem solving involving students. Your questions and participation are important.

We will write some program code on the board; other code we will compile and run using a projector. On several occasions we will divide into in-class teams to solve discussion problems.

We will have one conversation at a time in the classroom. Students may use laptops and enter and leave classroom consistent with a focused workplace governed by attention to business and by mutual respect.

Web aspect of course

This course is listed under http://framingham. blackboard.com. The site hosts a private discussion board for students enrolled in the course. Please log in at the above URL and then enroll in “63.252 Computer Science II” to obtain access. Part of Home­work 0 is to respond to the message posted by instructor on the Discussion Board at the Blackboard site, and we will be making other use of that site to communicate out of class.

Homework

Homework problems will be distributed with each of the course topics. Each homework will consist of graded and ungraded programming problems, clearly distinguished. The graded component will be chiefly work done on the semester project.

Homework must be submitted on time for credit. It is strongly recommended that you start very early on each homework assignment and ask questions if any part is unclear or seems difficult. Homework submitted for a grade must be done independently by the student submitting the work.

The graded homework is a relatively small part of the laboratory work you must do to master the material and to succeed on the quizzes and exams. Ungraded homework problems will form the inspiration for most of the in-class assessment. On these homework problems, you are invited to collaborate with classmates in any way you wish. This work may be submitted for comment and advice.

Grading

Most of the grade will be programming assignments, exams and quizzes on the course material. There are no make-ups for quizzes or midterm exam; lowest two quizzes are dropped and midterm exam grade will be the greater of two scores: final exam and midterm exam.

Homeworks and the project are graded for documentation of process, documentation of code, correctness, code clarity, and testing. Material submitted late can be assessed for possible partial credit, but only after all on-time work is graded.

Part of the grade will depend on in-class determination via quizzes and midterm exam that students by end of semester have the basic skills listed on page 1 of the syllabus.

Semester grade:

Basic skills                             20
Final exam                             25

Homework assignments          15

9 quizzes                                15
Midterm exam                        10

Project                                   10
Participation                             5

                                          ____

                                            100  %

Accommodations

Students who seek accommodations during the semester because of disabilities should meet with the instructor after class or during office hours early in the semester.




Course Plan

 

 

Relevant  chapters

Date

Topic

Savitch

Keil/Johnson

9/2-9/3

Introduction

 

 

9/6-9/15

1. Simple data types, control structures, and subprograms (extended CS I review)

1-4, 9, 13,
Appx. 1-5

1-5, 7-8, 14

9/16-9/23

2. Structure types and classes

6-7

9

9/24-10/4

3. Arrays

5

10

10/6-10/20

4. File input/output and storage

12

5

10/14

Midterm exam  (topics 1-3)

 

 

10/21-10/28

5. Searching and sorting arrays

 

11

10/29-11/10

6. Pointers, dynamic allocation, and linked lists

10, 17

14

11/12-11/19

7. Software development issues

11

12

11/22-12/2

8. Languages and language processing

 

handout

12/3-12/9

9. Computer science and discrete probability

 

handout

12/10-12/13

Review

 

 

Mon., Dec. 20, 9:00 a.m.


Final exam
(topics 1-9)