Dr. Jody Paul
jody@computer.org


Computer Science 3

Course Information

Title: Computer Science 3
Institution: Metropolitan State College of Denver
Course ID: CSI 390F, Section 1
Semester [CRN]: Fall 2002 [54318]
Meeting Times: Tuesdays and Thursdays, 2:00 PM - 3:50 PM
Location: SI 111
Credit Hours: 4
Official Info: This course should be taken in lieu of CSI 3300 (Foundations of File Structures) and has a prerequisite of CSI 2300 with a grade of "C" or better.
Course Website: http://www.jodypaul.com/cs/cs3
Instructor: Dr. Jody Paul (schedule)
E-mail: jody@computer.org
Office: Science 134D (x68435)
Office Hours:

Tuesdays and Thursdays 4PM–5PM & 6PM–7PM
Other days and times by appointment

Campus Mail: Campus Box 38

Online Discussions: http://cs.mscd.edu/~discus/

Class Handouts:

Course Description:

Building on the CS1-CS2 course sequence, this course broadens students’ knowledge of computer science concepts and provides experience with greater complexity in problem solving. Students will use a different programming paradigm, programming language and operating environment and will gain exposure to and practice with additional structures and algorithms, software development principles and practices, analysis techniques and design methods.

NOTE:
  This section (1) of CS3 will use the Scheme programming language.
   Section 2 of CS3 will use C++.

 

Course Objectives:

Upon successful completion of this course and in concert with the prerequisite background, you will be able to:
  • Specify, design, write and maintain programs of significant complexity.

  • Describe, analyze and implement software solutions that embody the following paradigms and data structures: functional, procedural, object-oriented, scalars, arrays, lists, linked lists, objects, strings, sets, trees and graphs

  • Explain, choose and utilize appropriate software life-cycle models; generate specifications and designs; construct and evaluate test plans; apply appropriate and effective debugging methods

  • Describe, choose and utilize appropriate programming paradigms; analyze problem and solution characteristics; choose implementation languages on basis of effectiveness; learn new languages with greater facility and speed

  • Work effectively under several development environments; choose development and fielding environments on the basis of effectiveness; learn new development environments with greater facility and speed

Resources:

Textbooks:
Image of Book Cover - How to Design Programs / Link to Amazon.com

How to Design Programs:
An Introduction to Programming and Computing

    (Tattered Cover; Amazon, HTML)
by Felleisen, et al.
MIT Press (2001)
ISBN 0-262-06218-6
Online: http://www.htdp.org/2002-05-09/Book/
REQUIRED

Image of Book Cover / The Little Schemer - Link to Amazon.com

The Little Schemer, 4th Edition
    (Tattered Cover; Amazon)
by Friedman and Felleisen
MIT Press (1995)
ISBN 0-262-56099-2
REQUIRED

Image of Book Cover / The Seasoned Schemer - Link to Amazon.com

The Seasoned Schemer
    (Tattered Cover; Amazon)
by Friedman and Felleisen
MIT Press (1996)
ISBN 0-262-56100-X
REQUIRED

Image of Book Cover / Link to Amazon.com

How to Use Scheme:
Writing Scripts and Programs with PLT Scheme

    (HTML)
by Felleisen, et al.
13 November 2001 Edition
Online: http://www.htus.org/Book/2001-11-13/
SUPPLEMENT

Image of Book Cover / Link to Amazon.com

The Scheme Programming Language, Second Edition
    (Tattered Cover; Amazon, HTML)
by R. Kent Dybvig
Prentice Hall (1996)
ISBN 0-134-54646-6
Online: http://www.scheme.com/tspl2d/
SUPPLEMENT


Connectivity:
You must have World Wide Web access and an e-mail account. Note that you receive an e-mail account and Internet access by virtue of being a student at MSCD (see: http://www.mscd.edu).

Recommended online information:

 http://www.swiss.ai.mit.edu/projects/scheme/ (Scheme home)
 http://www.scheme.org/ (Scheme links)
 http://www.scheme.com/ (Chez Scheme)
 http://www.plt-scheme.org/software/mzscheme/ (MzScheme)
 Defining Description of Scheme (R5RS)
 http://www.jodypaul.com/SWE/ (Software Engineering basics)
 Lisp As an Alternative to Java, by Erann Gat, 1999 (PDF)

Computing:
You must have access to a computer in a campus computer lab that is running some version of the UNIX operating system. The software development environment must include support for Java and Scheme.

 

Grading Policy:

You are expected to participate in class discussions and in-class exercises. There will be homework assignments that you are required to complete and turn in. Your final course grade is determined by combining your grades on exercises, assignments and exams. You are guaranteed a grade no lower than that computed by the following distribution of total points and weighted average conversion to letter grade:

  Distribution:
  Assignments/Exercises = 60%
  Midterm = 15% (given during week 8)
  Final Exam = 25%

  Weighted average conversion to letter grade
  89% < A;  79% < B < 90%; 69% < C < 80%; 59% < D < 70%; F < 60%

The following is a typical assessment rubric for programming assignments. The rubric will be modified to address the specifics of each assignment. The rubric for each assignment will be provided to students in advance of that assignment's due date.

  • Requirements Specification (SRS & end-user documentation) 25%
  • Implementation Documentation (architecture, design, code — assessed on the basis of content, readability and clarity) 35%
  • Testing & Correctness (testing objectives, test cases, sample run transcripts) 20%
  • Insights and Observations (reflective) 20%

A more detailed sample rubric: CS3 Programming Assignment Grading Rubric

Late assignments will not earn course credit. You may submit an assignment after its due date for comments and advice, and you are encouraged to do so. However, the score for that assignment will be recorded officially as 0. Likewise, missing an exam will result in a score of 0 for that exam. That is, late homework and make-up exams will not be accommodated without prior arrangement and written agreement. Unforeseeable crises and emergency situations will be dealt with on a case-by-case basis in accordance with MSCD, College, and Departmental policies.

Note that significant information will be disseminated during class sessions or on course websites that you will be responsible for knowing whether or not you attended the sessions or accessed the website. That is, not all information necessary to successfully complete the assignments or examinations is covered in the textbooks.

The work you turn in must be your own, created by you individually. Collaboration and discussion with fellow students concerning course information, materials, and studying for exams is encouraged. However, to provide fair assessment for grading and maximized benefit from the learning experience, work you turn in must reflect your individual effort. Turning in work that is the result of unauthorized collaboration or copying will be treated as academic dishonesty and an attempt at fraud. All incidents of suspected dishonesty will be reported to the department and the Dean of the college. Consequences may include a grade of 0 on the assignment or exam, a grade of "F" for the course, academic probation, or dismissal from the institution. This is a very serious matter and should not be taken lightly. If you have any uncertainty or concerns, please discuss them with your instructor or advisor.

Course Outline:

Topic Reading

Quick review of CSI2325 content

 

Introduction to programming paradigms (Object-Oriented, Procedural, Functional), programming languages (Java, C++, Scheme), development environments and operating systems

  • Similarities, differences, strengths and weaknesses
  • Applicability considerations and constraints
  • Idiomatic usage
  • The Little Schemer

    How to Design Programs: I

    Review fundamental data structures and algorithms; revisit in alternative language

  • Scalar/primitive types
  • Vectors
  • Structures
  • Lists
  • Trees
  • The Seasoned Schemer

    How to Design Programs:
    I – II

    Concepts, data structures, algorithms

  • Hashes/Associative Arrays/Association Lists
  • Heaps
  • B-Trees
  • Sets
  • Graphs
  • Generative Recursion
  • First-Class Procedures
  • Currying
  • Intensional and Extensional Equality
  • Appropriate Applicability Assessment Criteria


  • Software development principles and practices
  • Software life-cycle models (code-based, documentation-based, risk-based)
  • Software life-cycle models (code-based, documentation-based, risk-based)
  • Problem analysis and requirements specifications
  • Design models and documentation (including “design-for-maintenance”)
  • Graphical user interfaces (design; language support for implementation)
  • Structured walkthroughs (requirements, design, code, test plan)
  • Version control and build environments
  • Test plans and debugging methods
  • How to Design Programs:
    III – VIII

     

     

     

     

     

     

    http://www.jodypaul.com/SWE

    Official Announcements:

    Important Dates and Deadlines:

     See MSCD Calendar

    Class Attendance on Religious Holidays:

    The college policy on Class Attendance on Religious Holidays is posted on the information board outside the Mathematical and Computer Sciences department office (SI141). In addition, copies of this policy are available from the department upon request. It is the students' responsibility to understand and abide by the policy.

    American with Disabilities Accommodations:

    Students desiring a reasonable accommodation under the ADA must contact the instructor immediately to discuss their needs. Failure to notify the instructor, in a timely manner, of the need for a reasonable accommodation may hinder the college's ability to assist students in successfully completing the course.



    Labelled with ICRA

    ©2002 Dr. Jody Paul