CSCI 112(015B) with Dr. J, California State University, Chico

CSCI 112(015B)
Programming and Algorithms II


E-version of most current syllabus available in


Fall 2001 Instructors and Sections


TRACS
Call#
 

 Section 
 

 Act 
 

 Days 
 

 Time 
 

 Room 
 

 Instructor 
 
  CSCI 015B-04 DIS MW 0300-0415  OCNL 254  Juliano
  CSCI 015B-05
  CSCI 015B-06
11135 CSCI 015B-04 ACT W 1100-1150 OCNL 244 Del Maschio 
11136 CSCI 015B-05 ACT M 1100-1150 OCNL 244 Del Maschio 
15805 CSCI 015B-06 ACT M 1000-1050 OCNL 244 Del Maschio 
 



Prerequisites

CSCI 111(015A), Programming and Algorithms I

Description

This is a second semester object-oriented programming course in computer science that emphasizes problem solving. This course continues the study of software specification, design, implementation, and debugging techniques while introducing abstract data types, fundamental data structures and associated algorithms. Coverage includes dynamic memory, file I/O, linked lists, stacks, queues, trees, recursion, and an introduction to the complexity of algorithms. Students will be expected to design, implement, test, and analyze a number of programs within the Unix environment. 2.0 hours discussion, 2.0 hours activity. CAN CSCI 24.


Required accounts

ECST Unix account   All programming assignments will be designed to run on the ECST Unix servers, using the Gnu g++ compiler. To create an account, go to card reader in OCNL 136.
 
Students will be required to open and maintain a WebCT account in order to access up-to-date on-line calendar of events/progress, on-line quizzes, etc.



Required Text

Click for textbook website ... Data Structures and Other Objects using C++, 2/e
M. Main & W. J. Savitch, 2001.
Addison-Wesley Publishing, Inc., Reading, Massachusetts
ISBN 0-201-70297-5
(Also available: Authors' supplements and support pages for the textbook.)

You can also check out what textbooks were used in previous semesters.


Recommended/Supplementary Material:

Click for textbook website ... The C++ Programming Language, Special Edition
Bjarne Stroustrup, 2000.
Addison-Wesley Publishing, Inc., Reading, Massachusetts
ISBN 0-201-70073-5
(Also available: Authors' C++ information pages.)

Click for textbook website ... STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library, 2/e
D. R. Musser, G. J. Derge, and A. Saini, 2001.
Addison-Wesley Publishing, Inc., Reading, Massachusetts
ISBN 0-201-37923-6
(Also available: Authors' textbook website.)

Recommended Unix Reference Learning the UNIX Operating System, 4e
Jerry Peek, Grace Todino & John Strang, 1997.
O'Reilly & Associates, Inc.
ISBN 1-56592-390-1


Course Objectives

The objectives of this course are to:

  1. help students learn and adopt a disciplined approach to algorithm design and program implementation by covering fundamental areas of structured problem solving, object-oriented programming, data abstraction, and the comparative analysis of algorithms;
  2. promote an understanding of the basic principles and techniques in the specification, design, implementation, and application of basic data types to real world problems; and
  3. teach students how to use basic tools to develop correct, efficient, and well-structured programs - thereby building a strong foundation for further studies in the computing sciences.


Course Outcomes

Upon successful completion of this course, the student shall be able to:

  1. successfully apply a disciplined approach to algorithm design and program implementation by adopting fundamental techniques of structured problem solving, object-oriented programming, data abstraction, and/or the comparative analysis of algorithms;
  2. correctly apply basic principles and techniques in the specification, design, implementation, and application of basic data types to real world problems; and
  3. use basic tools to develop correct, efficient, and well-structured programs - thereby exhibiting a strong foundation for further studies in the computing sciences.


Grade Evaluation

This course is designed to give students an equal opportunity of exposure to both Theory and Practice. Students are expected to demonstrate proficiency on both the theoretical and practical aspects of this course.


  Theoretical Component  (50%)  
 
   25%    At least six (6) in-class quizzes   
   20%    Exam 1   
   20%    Exam 2   
   35%    Exam 3 (Final Exam, as scheduled in the Class Schedule)   

  Practical Component  (50%)  
 
   100%    Programming Assignments   
 

Students are required to earn a C (70%) or better in both the Theoretical and the Practical components; otherwise, the minimum of the scores of the two components will be used to calculate the student's final grade.


Final Grades

Final grades shall be expressed as a percentage of the maximum possible score of all evaluated materials. Letter grades will be given according to the following scheme:


  Real Interval  
 

  Letter Grade  
 

  University Definition  
 
[96,100]   Superior Work
[90, 96) A-
[87, 90) B+   Very Good Work
[83, 87)
[80, 83) B-
[77, 80) C+   Adequate Work
[73, 77)
[70, 73) C-
[66, 70) D+   Minimally Acceptable Work  
[60, 66)
[ 0, 60)   Unacceptable Work
 


Note:  It is Dr. J's policy not to assign a final grade of D or D+ to graduate students. Hence,
graduate students with a class standing less than C- (70%) earn a final grade of F.



General Policies

Dr. J has some general policies that apply to all courses that he teaches. Students are expected to read and understand these policies upon registration of the course. What follows below are course-specific policies.



Quizzes

Only the top five quiz scores are considered when computing final grades for the course - the lowest quiz scores are dropped.

The lab instructors will have more details on additional guidelines concerning Programming Assignments.


Tentative Schedule

The following tentative schedule is subject to change without notice:


  Week  
 

  Chapter  
 

  Coverage/Comments  
 
1 1,2   Introduction: program specification, design, and analysis;  abstract data types (ADTs) and C++ classes  
2 3   Container classes
  Exam 0, class time  -  This exam is designed primarily as a "prerequisite check" to facilitate the student's decision to stick with the course or not. (Also see Dr. J's Policies.)
3 4   Pointers and dynamic memory, dynamic arrays, dynamic classes  
4 5   Linked lists, building a toolkit, variations to the linked list ADT  
5 5   More linked lists and review
  Exam 1, class time
6 6   Template functions and template classes  
7 6
7
  Stack ADT, stack template class, applications that use stacks  
8 8   Queue ADT, applications that use queues, priority queue ADT  
9 9   Recursion, fractals, and mazes  
10 9   Catch-up and review  
  Exam 2, class time
11 10   Tree ADT, representation, traversals, binary search trees  
12 11   Heaps and B-trees  
13 12   Searching: sequential search, binary search, and hashing  
14 13   Sorting: quadratic sorting algorithms, Mergesort, Quicksort, Heapsort  
15 14   Derived classes: inheritance  
16     Final Exam, as scheduled (see Class Schedule)