Header image  

Computer Science and Systems Analysis

 
  Home ::   Teaching ::   Research  ::   Publications  ::   SEURAT  ::  
   
 
CSE 271 - Object-Oriented Programming
 

Instructor: Janet E. Burge, 205W Benton Hall, 9-0347, burgeje-at-muohio.edu
Office Hours: M: 11, T: 4, W: 11, Th: 3 (subject to change)

Prerequisite: A 'C-' or higher in CSE 174
Required Text: Savitch, Absolute Java, 4th Edition (3rd or 2nd ok too!) or any other Java book (see below)
Additional References: See Cascade

Jump to the syllabus

Catalog Description: The design and implementation of software using object-oriented programming techniques that include inheritance, polymorphism, and composition. Students will analyze program specifications and identify appropriate objects and classes. Additional programming topics include recursion, using existing class libraries, exception handling, file IO and graphical user interfaces.

Course Learning Objectives:

  • Design and implement programs using object-oriented programming techniques
  • Use 3rd party class libraries to assist in problem solving
  • Develop applications that incorporate exception handling
  • Develop applications that include a graphical user interface (GUI)
  • Store and retrieve data from permanent storage using an ASCII and binary data format
  • Use recursion as a problem solving technique
  • Use standard collection classes such as associative arrays and sets

Thus, at the end of the course , students will be able to:

CSE 271.1: To be able to design and implement computer programs using object oriented programming techniques

CSE 271.1.1 Implement basic control structures, nested control structures, well-specified classes, single and multi-dimensional arrays, input and output methods, and string methods as learned in CSE 174
CSE 271.1.2 Use class libraries to assist in problem solving
CSE 271.1.3 Make appropriate use of inheritance, polymorphism, composition, abstract classes, and interfaces.
CSE 271.1.4 Make appropriate use of two or more collection classes
CSE 271.1.5 Write basic UML class diagrams.
CSE 271.1.6 Break a programming problem down into an appropriate set of classes and identify appropriate methods for each class, and explain the design choices made
CSE 271.1.7 Research and use classes not studied in the course to address problems
CSE271.1.8 Interpret a UML diagram and explain its relationship to a problem statement
CSE 271.1.9 Read and understand code written by people other than themselves
CSE 271.1.10 Describe, trace, and implement bubble sort, selection sort, and/or insertion sort
CSE 271.1.11 Be able to use library routines for searching and sorting data

CSE 271.2: To be able to write robust programs

CSE 271.2.1 Resolve compilation errors, validate program input, use the debugger to locate logic errors, and generate basic test cases as learned in CSE 174.
CSE 271.2.2 Design and document a complete set of test cases and use this to identify logic errors.
CSE 271.2.3 Effectively use exception handling features to write exception classes, handle exceptions, and throw problem specific exceptions.

CSE 271.3: To be able to use permanent storage to preserve the state of a program

CSE 271.3.1 Read and write data to text files.
CSE 271.3.2 Read and write data and objects to binary files

CSE 271.4: To be able to use recursion as a problem solving technique

CSE 271.4.1 Trace through recursive computations.
CSE 271.4.2 Recognize problem situations where recursion is appropriate and write recursive methods that process both numeric and structured data.
CSE 271.4.3 Describe and implement the mergesort and quicksort algorithms

CSE 271.5: To be able to design and develop applications with a graphical user interface

CSE 271.5.1 Use fundamental classes to design a rudimentary, but functional, user interface

CSE271.6: To be able to document software processes, requirements, design, and code

CSE 271.6.1 Use a problem statement to define a set of software requirements
CSE 271.6.2 Explain how a final software implementation deviated from their original design
CSE 271.6.3 Follow good programming style and documentation conventions to write code that is easily understandable and extensible
CSE 271.6.4 Explain issues encountered and progress made during a software development project

Textbook: The lectures are all based on Savitch "Absolute Java." You will also be directed to the Java API. There are many other Java books out there, many of which will cover the same material. Here are some free options available through Safari (caveat - my review of these books goes no deeper than the table of contents!):

Syllabus: Note: topics, dates, and assignments are subject to change at instructors discretion (topics and dates will almost certainly change although due-dates most likely will not). Most projects are due shortly before midnight. You have two "late days" that can be used at any point during the semester except for the final project. Once the late days have been used up, any late projects will receive no credit.

Note that readings are somewhat approximate. There will also be two exam make-up days off at some point in the semester (to be scheduled later).

CSE 271 Syllabus
Week
Date Topics Readings Assignments Due
1
8/22

Class Intro
Inheritance

Ch. 1-6 (review from 174)
Ch. 7.1
 
8/24 Inheritance, cont.
Code inspection
Project 1 Project 1 Inspection report: Due 8/26
2
8/29 Superclasses/Encapsulation/Equals Ch. 7.2-7.3  
8/31 Casting/Polymorphism Ch. 8.1

Project 1 (Review): Due 9/1 Report Due 9/2

3
9/5 Labor Day - no class    
9/7 Polymorphism Ch. 8.1  
4
9/12 Abstract Classes Ch. 8.2 Project 2 (Inheritance): Due 9/13; Report due 9/14
9/14 Interfaces Ch. 13.1  
5
9/19 Array List Ch. 14.1



9/21 Testing Notes Project 3 (Polymorphism & Abstract classes): Due 9/21; Report due 9/22
6
9/26 Basic Design/UML Ch. 12.1

 

9/27 Exam 1: 7 pm, ENG 270    
  9/28

Basic Design

Ch. 12.2  
7
10/3 GUI Ch. 17.1-17.2

Project 4 (ArrayList) Due 10/4; Report due 10/5

10/5 GUI Ch. 17.3  
8
10/10 GUI Ch. 17.4-17.5 Project 5: (Requirements/Design/OO Programming)
10/12 GUI/Exceptions    
9
10/17 Exceptions Ch. 9.1-9.3  
10/19 Text File IO Ch. 10.1-10.3 Project 5 (Design - UML)
10
10/24 No class today Ch. 10.4

 

10/26 Binary File IO   Project 5 (Implementation), due 10/28; Report due 10/29
11
10/31 Sorting (non-recursive)  
  11/1 Exam 2: 7 pm, ENG 270    
11/3 Reading Recursion Notes  
12
11/7 No class today Ch. 11.1  
11/9 Recursive Problem Solving Ch. 11.2-11.3

Project 6 (GUI), due 11/10; Report due 11/11

13
11/14 Recursive Problem Solving/Searching    
11/16 Recursive Sorts Notes

 

14
11/21 GridBagLayout Notes Project 7 (Exceptions; File IO), due 11/21; writeup due 11/22
11/23 Thanksgiving Holiday - No Class    
15
11/28 Collections Ch. 16.1-16.2  
  11/30 TBD  
16
12/5 References in Java Notes  
12/7 Demonstrations   Project 8: Final Project, due 12/7, 8 am; Report due 12/8
17
TBD

Final Exams:
-- Section A: Monday, Dec 12, 8 am
-- Section B" Wednesday, Dec 14, 10:15

 

 

Grading: The final grade for CSE271 is based on the following:

 

Assignment Percentage

Attendance/In-class assignments/quizzes/labs

10%

Projects (Note: to obtain a grade of C- or higher you must get 60% of the project points)

  • Project 1 Review (3)
  • Project 2 Inheritance (4)
  • Project 3 Polymorphism and Abstract Classes (5)
  • Project 4 Array List (4)
  • Project 5 Design/OO Programming (7)
  • Project 6 GUI (5)
  • Project 7 File IO and Exceptions (5)
  • Project 8 Final (7)
40%

Exams

  • Exam 1 (15)
  • Exam 2 (15)
  • Final Exam (20)
50%

Grading Policy: Numeric grades will be given for all assignments.

98-100 = A+ 92-97.9 = A 90-91.9 = A-
88-89.9 = B+ 82-87.9 = B 80-81.9 = B-
78-79.9 = C+ 72-77.9 = C 70 - 71.9 = C-
68-69.9 = D+ 62-67.9 = D 60-61.9 = D-
< 59.9 = F

 

Academic Honesty: All work assigned as individual work must be done as individual work and in accordance with the departmental Academic Integrity statement. Violations will be handled in accordance with the Miami University Academic Honesty Policy. Code from textbooks other than Savitch can be used only with instructor permission (in particular, you should not be lifting entire methods or entire classes but when in doubt - ask!).