Carnegie Mellon

 

H. John Heinz III School of Public Policy and

Management

 

90-875 Computer Programming Methods I

 

Class Hours: Wednesday, 5:30 – 8:30 PM

Class Location: Rm. HBH 1001, Hamburg Hall

 

Course Instructor: Michael J. McCarthy

 

          Office: A002 Hamburg Hall

          Office Hours: T. R. 1:30 – 3:30 or by appointment

          Phone: 268-4657 (office), 344-5137 (home)

          E-mail: mm6@andrew.cmu.edu

 

Teaching Assistants:

 

          Anand Kadekuzhi                                      WX Ding (Amy)

          Office hours: TBA                                     TBA

          anandk@andrew.cmu.edu                        wding@andrew.cmu.edu

 

COURSE RATIONAL AND OBJECTIVES

 

This course is designed to introduce the student to computers, computer programming, and rudimentary data structures using the Java language. In particular, we will be using Sun Microsystem’s Java compiler JDK1.2.1 (this program is also called Java 2 SDK, Standard EditionVersion 1.2.1). The Java compiler and documentation are available for free from Sun and can be downloaded for home use from www.javasoft.com. The compiler is available for use in the lab at the Heinz School.

 

This course assumes only limited prior experience with computers (word processing, etc.).

 

Most of the course will be spent learning the fundamentals of problem solving as it relates to computer programming and the Java programming language. By the end of the mini you should be able to write and implement simple programs in the Java language. You will also be exposed to a number of fundamental computer concepts that transcend programming and the Java programming language.

 

Keep in mind that this is only an introductory course. More advanced topics will be covered in 90-876 Computer Programming Methods II. I will assume that the student is new to programming. 

 

COURSE ORGANIZATION AND METHODOLOGY

 

The course is organized around two types of class activities:

 

Lectures, where the specific topics will be presented and discussed with the students. The theory, issues, and practices related to each topic will be reviewed in class.

 

Programming Labs and Projects. The emphasis here will be on actual programming using the Java language. In 90-876 Programming Methods II, at least one of the labs will involve building a home page (some HTML and some Unix will be covered) and placing a Java Applet on that home page. All students are required to have an active Andrew account.

 

COURSE MATERIALS

 

Required Textbook: Java Gently (2nd edition), by Judy Bishop

 

ATTENDENCE

 

The student is responsible for any missed material.

 

ASSIGNMENTS

 

There will be two programming projects and two lab exercises. Each of the assignments will have a suggested due date (see schedule below). If you turn an assignment in after the suggested due date, it will be accepted and graded but with a one-time penalty of 5%. Thus, there is some flexibility for late work. However, it is not a good idea to lose 5% on each assignment. In general, it is to your advantage to turn work in on or before the due date.  No programs or labs will be accepted after the night of the final exam (October 13).

 

COLLABORATION

 

Collaboration is permitted when working on labs.

 

Collaboration is not permitted on projects.

 

GRADING AND EVALUATION CRITERIA

 

Grades will be computed as follows: `

 

     Programming Project 1  (20%)        

     Programming Project 2  (30%)

     Labs (2) (10% each)

     Final Examination (20%)

     Quizzes (2) 5% each

 

GRADING SCALE

 

     97.5 - 100     A+

     92.5 -  97.4   A

     90.0 - 92.4    A-

     87.5 – 89.9   B+

     82.5 – 87.4   B

     80.0 -  82.4   B-

     :

     :

PROGRAM GRADING

 

Each programming problem will contain a specific point distribution. In general, the programming assignments will be graded based on the following criteria:

 

    1.Validity of the algorithm and its implementation

    2.Programming Style

    3.Documentation and presentation

 

 

 

 

 

FINAL EXAMINATION

 

The final examination will be held during Heinz finals week. The examination will be a closed book exam and will be comprehensive. There will be programming problems on the final exam. The approximate time for the examination will be 2 hours.

 

 

COURSE TIME-TABLE

 

This is a tentative outline.  I plan on making updates to the topic list as the course proceeds. The topic list will be found on the course web site. The course web site location will be announced soon.

 

Date

Readings/Topics/Quizzes

In

Out

Aug. 25

2.3 Beginning with output

2.4 All About Assignment

 

Prior to next class, visit the two web sites http://www.cs.up.ac.za/javagently

and

http://java.sun.com/docs/books/tutorial/

 

Sept. 1

3.1 Properties of a good program

3.2 Talking about types

3.3 Repetition with for loops

 

 

Lab 0 Assigned

Sept. 8

Quiz 1 at end of class

3.4 Making Methods

3.5 Passing parameters

 

Project 1 Assigned

Sept. 15

3.6 Guidelines for designing classes

3.7 Case Study I

2.2 Fundamentals of Object-Oriented Programming

Lab 0 Due

Lab 1 Assigned

Sept. 22

5.1 Conditional loops with while and do

5.2 the switch statement

7.1 Strings and string handling

Project 1 Due

Project 2 Assigned

Sept. 29

Quiz 2 at end of class

6.1 Simple Arrays

6.2 Tables

6.3 Sorting and Searching

Lab 1 Due

 

Oct. 6

Review for final exam

Project 2 Due

 

Oct. 13

Final Exam