Computer Science I (810:059, Section 2) Fall 2002

General Information

4 Credits

Time and Place: Section 2 - TTh 12:30-1:45, Wright 105 plus laboratory time to be arranged.

Class Directory: http://www.cs.uni.edu/~fienup/cs059s02/

(Check here for lecture notes, announcements and supplemental class materials)

Texts: An Introduction to Object-Oriented Programming in Java, 2nd edition, C. Thomas Wu (ISBN 0-07-239684-9)

Instructor - Mark Fienup

Email: fienup@cs.uni.edu

Office: Wright Hall 321, phone 273-5918

Office Hours: MW 9-11, 2-3, TTh 9:30-10:30, F 10-11, anytime my door is open, and by appointment.

Course Description

Computer Science I (810:059) is the Computer Science department's introductory programming and is the first course in the sequence for majors. This course offers an introduction to algorithmic problem solving using the object-oriented programming language Java. Topics covered will include the paradigm of object-oriented programming, basic data structures, problem-solving strategies, and an introduction to data and procedural abstraction. There will be a significant emphasis on program design and style.

This course is appropriate for students with little to no programming experience. It has no prerequisites.

Why this class is important

Computer science students need to acquire the reasoning and abstraction skills needed for designing algorithms and programs. This course teaches how to think as a computer scientist, by teaching the process of building abstractions to hide implementation details, of decomposing problems into simpler problems, and of controlling the intellectual complexity of designing large software systems.

Outcomes

Upon successful completion of the course students should have the following skills and proficiencies:

  1. Understand the basic workings of a computer, and how basic software is designed
  2. Understand the advantages and disadvantages of Java over other languages
  3. Be able to program Java applications and applets at a moderate level
  4. Be able to use good problem analysis and program development techniques
  5. Understand how to use algorithmic thinking, elementary data structures, and common programming techniques

Graded Work

In-class Group Activities (10%) – The format of the class will typically be a mini-lecture (10-15 minutes) followed by an pencil-and-paper exercise over the topic of the mini-lecture. To reduce frustration and aid learning, these exercises will be performed in "randomly" assigned groups, where students can help other students.

Lab Assignments (20%) – Lab assignments will be devoted to hands-on programming and related activities. You will have one week to work on lab assignments. They will normally be made available in class on Thursdays and should be made available online at approximately the same time. Unless otherwise noted, labs are due at the beginning of class the following Thursday. These labs are time consuming, and you'll occasionally encounter difficulties in completing the lab, so don't wait until the last minute or help may not be available.

These labs should be completed on an individual basis, i.e., you must write your own Java code for their solutions. If you have questions concerning a lab, feel free to consult your instructor, graduate teaching assistant (TA), or another student in the class. However, copying from another students is forbidden since it will not help you learn. Asking another students questions to improve your understanding so that you can complete the lab is okay. If you get substantial help for your lab solution from another student or a publication, you should acknowledge this contribution in writing on the lab.

Out-of-class Lab Exams (20%) – There will be two lab exams during the semester that will be held in one of the computer labs (see schedule). During a lab exam, you will be given an hour and 45 minutes to complete some programming exercises on your own.

Exams (15% for each mid-term exam and 20% for the Final) – There will be three exams. Two will be mid-term exams, while the other will be the scheduled final exam for the course (3-4:50 Thursday, May 9). The exams are closed book exams, except for a one page "cheat sheet". Tentative dates for the mid-term exams are listed in the schedule. The actual date of each exam will be announced no less than one week prior to the exam. If you are aware of conflicts prior to the exam, please make me aware of these as early as possible.

Grade Assignment

Grading for this course is on an absolute scale. Ideally, grades will be assigned based on straight percentages, i.e., 100-90 A, 89-80 B, 79-70 C, 69-60 D, and below 60 F. Plus and minus grades will be assigned for students near cutoff points. (Often, this ideal absolute scale needs to be adjusted downward)

Accessibility

The Americans with Disabilities Act of 1990 (ADA) provides protection from discrimination for qualified individuals with disabilities. Students with a disability, who require assistance, will need to contact the Office of Disability Services (ODS) for coordination of academic accommodations. The ODS is located at 213 Student Services Center. Their phone number is 319/273-2676. Additionally, please contact me immediately if you have a learning or physical disability requiring accommodation

Guidelines for Success in this Course

Once you have allocated the necessary time for this course, the following suggestions, compiled from student experiences, should help you plan your time use and prepare for the labs and exams:

Tentative Schedule

Check the class website frequently for changes and announcements.

Week of Reading Topics Tentative Deadlines
January 14 Chapter 0 - Course Introduction, History of computers and programming  
January 21 Chapter 1 - Intro. to Object-oriented (OO) Programming, Lab Intro.  
January 28 Chapter 2 - Java Programming Basics Thursday, Lab 1 Due
February 4 Chapter 3 - Numerical Data Thursday, Lab 2 Due
February 11 Chapter 4 - Defining Instantiable Classes Thursday, Lab 3 Due
February 18 Chapter 6 - Selection Statements Thursday, Lab 4 Due
February 25 Chapter 6 - Selection Statements Thursday, Mid-term 1
March 4 Chapter 7 - Repetition Statements Thursday, Lab 5 Due
March 11

Chapters 7 and 8 - Repetition Statements, Characters and Strings Thursday, Lab 6 Due

Thursday/Friday, Lab Exam

March 18 Spring Break  
March 25 Chapter 8 - Strings and String Buffers Thursday, Lab 7 Due
April 1 Chapters 9 and 10 - Arrays and Searching Thursday, Lab 8 Due
April 8 Chapters 9 and 10 - Arrays and Sorting Tuesday, Mid-term 2
April 15 Chapters 9 and 10 - Arrays and Sorting Thursday, Lab 9 Due

Thursday/Friday, Lab Exam

April 22 Chapter 5 - GUI and Event-driven programming  
April 29 Chapter 5 - GUI and Event-driven programming Thursday, Lab 10 due
Finals Week Final – 3-4:50 PM Thursday, May 9