CMPS 012a: Introduction to Programming - Fall 2008


[Homepage] | [Lab Info] | [Supplements] [Programming Projects] | [Exams]

Instructor Information

Charlie McDowell
Office: E2 349B
Hours: TuWeTh 11am-noon
E-mail: charlie@cs.ucsc.edu

Teaching Assistant

Martin Jennings-Teats
E-mail: mjennin1@soe.ucsc.edu
Office hours: Tuesdays 11am-1pm, BE 314B

Here is a link to WebCT for the online discussions, daily review questions, and program submission.

Class notes on Ubiquitous Presenter

I plan to use Ubiquitous Presenter (UP) during class. This will provide you with access to my notes/slides including any annotations I make during class. I also expect to use UP for in class activities/exercises where you will submit items (typically code fragments) for display during class. Please go to up.soe.ucsc.edu and enroll in cmps012aF08. The password will be given out during class.

Audio and screen shots from class

I also hope to be posting "movies" with audio of the primary computer display from class. These will appear in class recordings.

Lab Information

Lab attendance is required. You will be completing specific lab exercises on most days. See Lab Information for more details.

Lecture Supplements

This section contains additional information from the instructor to supplement the lectures. Materials will be added here as they become necessary.

Required Text:

Java by Dissection 2nd Edition. Pohl and McDowell (http://www.lulu.com/JavaByDissection)

Evaluation:

Whichever gives you the highest score.

A minimum of 50% on all four aspects of the grade is necessary but not sufficient to pass this class. This means, if you receive less than 50% on any one of the four parts (programming assignments, quizzes, review questions, or final), you will not pass, however, just because you score at least 50% on each part does not imply that you will necessarily pass. For example, someone that scored 51% on each of the four parts would almost certainly, NOT pass. The policy is intended primariliy to prevent students from "blowing off" the homework or programming assignments because they only count 10% and 20% of the grade respectively. You cannot pass this class if you do not do the homework and programmming assignments.

Working Together:

The programming projects are to be done in two person teams following the pair programming guidelines. For the first three programs (really one program done in three steps) you can select your own partner. There will be opportunites in class and lab to find a partner. For the remaining projects, you will be assigned a new partner from your same lab section for each assignment. You will be expected to work with this partner both on the lab assignments (which will be part of your 12L grade) and on the programming projects (which will be part of your 12A grade). Your partner must be enrolled in the same lab section. New lab partner assignments will be posted the Monday following each programming project due date. The normal policy is for all students to be assigned new partners after each project, however, if you feel strongly that you want to continue with your current partner, you may petition the instructor as described in the pair programming guidelines.

You may freely give and receive help with the computer facilities, editors, UNIX, debugging techniques, the meaning and proper use of Java constructs, etc.. You should not discuss your design or implementation of the programming assignments with students other than your partner until after they are turned in. In particular you should not view another person/pair's program, or allow someone (other than your partner) to view any part of your program, prior to successfully completing that assignment (see below). Obviously, copying any part of another person/pair's program, or allowing your program to be copied is not permitted. A program, Moss, will be in use to detect copying. If you have any questions on this important point, please see me.

Academic Dishonesty:

Any confirmed academic dishonesty including but not limited to copying programs or cheating on exams, will constitute a failure of the computer ethics portion of this class and result in a no-pass or failing grade. You are encouraged to read the campus policies regarding academic integrity.

Programming Projects:

BOTH partners in a pair should submit the program. This is required for two reasons. First, it avoids the "I thought my partner was going to submit it" problem. Second, it facilitates the online grading by letting WebCT know that each student has actually submitted a solution. Programs will be submitted through WebCT.

Programming assignments, grading policy, and due dates can be found on the class web page homework section.

Quizzes:

There will be a quiz every other Monday with the first quiz on October, 6th.

Audience:

This course is designed for SoE majors, and prospective majors, providing an accelerated introduction to programming. It assumes you have had some exposure to the concepts of variables, expressions, and statements, including the notions of looping and conditional statements. These topics will be covered quickly (reviewed?) in the first week or so of class. There are computer literacy courses (e.g. CMPS2 and CMPE3), and computer programming courses that are designed for other majors (e.g. CMPS5C, CMPS5J, and CMPS5P). If you have no prior programming experience, or even if you have but would prefer more time to practice and really master the material, you should consider taking the two course sequence CMPS5J-CMPS11, which covers the same material and satisfies the same major requirements within SoE majors as CMPS12A/L.

To help you decide if you should be in this class, please complete the pre-req-check programming assignment which is due at 11pm on the first day of class, Friday September 26th.

If you qualify for classroom accommodations because of a disability, please get an Accommodation Authorization from the Disability Resource Center (DRC) and submit it to your instructor (Charlie McDowell) in person outside of class (e.g., office hours) within the first two weeks of the quarter. Contact DRC at 459-2089 (voice), 459-4806 (TTY), or http://drc.ucsc.edu for more information on the requirements and/or process.

Syllabus

Date Topic Reading
September 26 run/compile Java, main(), primitive types, int divide, Processing JBD Chapter 2
September 29 if/else, String, Scanner Sections 2.5, 2.6, 3.1-3.4
October 1 for/while Chapter 3
October 3 Practice: if/for/while logical expressions Chapter 3
October 6 Methods/Functions Sections 4.1-4.8
October 8 passing references (String and StringBuffer) Section 4.8, 6.13
October 10 Practice: top-down design Section 4.9, 4.12, 4.13
October 13 1D arrays - testing, mutation testing contest Sections 5.1-5.5
October 15 ArrayList - using the DrJava debugger Sections 5.13
October 17 NEW LOCATION - RESEARCH DAY: Practice: review call by reference using arrays  
October 20 Using a Class to represent structured data, constructors, toString() Chapter 6, especially section 6.5, 6.8, 6.11
October 22 call by reference using object "pointers" Chapter 6, especially section 6.13
October 24 Practice: working with classes Chapter 6
October 27 ADT, methods, private Chapter 6, especially sections 6.6, 6.7
October 29 Static vs Non-static, Scope Sections 6.9-6.14
October 31 Practice: Chapter 6 review Chapter 6
November 3 OOD - nouns and verbs Sections 6.18-6.19
November 5 2d Arrays Sections 5.10, 5.11, 5.12
November 7 Practice: 2d Arrays Section 5.11
November 10 Inheritance Chapter 7, especially sections 7.1-7.7
November 12 Interfaces Chapter 7, especially section 7.8
November 14 Practice: Inheritance Chapter 7, especially section 7.7
November 17 Swing/GUI Chapter 8, especially sections 8.1-8.4
November 19 Drawing with Swing Chapter 8, especially sections 8.5, 8.7
November 21 Practice: Applets Chapter 8, especially section 8.8
November 24 Simple Linked List Sections 12.1-12.4
November 26 Practice: Stacks and Lists  
December 1 Recursion Section 4.10
December 3 Recursion on a list Section 12.4
December 5 Practice: Recursion  
December 9 Final Exam 7:30-10:30PM  

[Homepage] | [Lab Info] | [Supplements] [Programming Projects] | [Exams]

This page maintained by Charlie McDowell. Email regarding this site.