CS 108 Intermediate Programming (Java)
Fall 2014
Credits: 3 units
Contact Hours: Section 1: Tues and Thurs, 1600-1715, Room P-148
Section 2: Tues and Thurs, 1400-1515, Room GMCS-301
Instructors: Ivan Bajic Office: GMCS 538 Email: ibajic@rohan.sdsu.edu Phone: 619-594-7253
Office Hours: Mon-Thurs 1515-1600, and by appointment
*Course Materials
1. Required text: Horstmann, Java for Everyone: Late Objects , Wiley, 2013.
ISBN-13: 978-1-118-06331-6.
2. Optional text: Hahn, Harley Hahn's Guide to UNIX and Linux , McGraw-Hill, 2008.
ISBN-13: 978-0-073-13361-4 .
3. CS108 lecture notes/slides (available on Blackboard)
*Course Information for CS 108
Description from the Official Course Catalog
Further training in program design and development. Object-oriented programming to include inheritance, polymorphism, and generic code. Extensive programming in Java. Introduction to data structures.
Prerequisites: Computer Science 107
Course Type: Required course in the program
*Specific Goals for CS 108
Course-Level Student Learning Outcomes
* Produce clearly written code in an industry standard style appropriate for Java.
* Configure a Java Development Kit (JDK) and Integrated Development Environment (IDE) for advanced
Java programming.
* Write Java programs using object-oriented design, and contrast the difference between object-oriented and procedural code.
* Design, implement, and test Java programs that use class inheritance, and explain why this is an example of the "is-a" relationship.
* Use both instance members and static members, as appropriate, in class design.
* Explain what abstract classes and Java interfaces are and how they are used.
* Define various types of Java generics and show how each is specialized to a class by the client program.
* Solve problems that have origins in a variety of disciplines including math, science, the Internet.
* Use Object-oriented programming concepts to design applications and computer programs.
* Create programs which use Inner Classes.
* Design and implement classes that use inheritance.
* Design and implement abstract data types using classes, encapsulation, inheritance and polymorphism.
* Use inheritance relationships to create polymorphic references.
* Explain how errors can be reported to the calling function.
* Explain what an algorithm is and give examples of how algorithms are implemented in a Java program.
* Design and implement algorithms using various data structures.
* Analyze the time and space required for algorithms.
* Identify the appropriate data structure and algorithm to solve a programming problem.
* Evaluate appropriate data structures for a given problem.
* Analyze and apply appropriate sorting and/or searching algorithms.
* Design and implement recursive solutions.
* Describe how iterators access the elements of a container.
* Incorporate user-interaction input and output in a program through either console or graphical user interface methods.
* Produce a program that interacts with the user using intermediate GUI elements such as buttons and text-boxes.
* Design and implement simple graphical user interfaces including events and listeners.
* Write to and read from files using intermediate file I/O operations in a Java program.
*Relationship to CS Program Course Outcomes
CS 108 addresses the following CS Program course outcomes (CS Program Student Outcomes):
* a) An ability to apply knowledge of computing and mathematics
* b) An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution
* c) An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
* d) An ability to function effectively on teams to accomplish a common goal
* f) An ability to communicate effectively with a range of audiences
* h) Recognition of the need for and an ability to engage in continuing professional development
* i) An ability to use current techniques, skills, and tools necessary for computing practice
* j) An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.
* k) An ability to apply design and development principles in the construction of software systems of varying complexity.
*Topics Covered
The following topics are covered in CS 108:
* Introduction to classes, objects, and object-oriented techniques for problem solving
* Encapsulation and information hiding
* Instance variables, instance methods, static/class variables, static/class methods, constructors
* Programming with classes and methods
* Inheritance, class hierarchies, derived classes ("is a" relationships)
* Interfaces ; Abstract classes ; Inner classes
* Non/static nested classes ; non/static local classes ; non/static anonymous classes
* Generics ; Iterators (in separate classes, and in inner classes) ; the Comparable interface
* Exception handling: try-catch, throw, throws, exception propagation, checked/unchecked exceptions
* Abstract Data Types (ADTs) and Interfaces
* Polymorphism, dynamic binding and polymorphic method invocation, using inheritance relationships to create polymorphic references
* Graphical User Interfaces (GUIs), events, listeners
* Recursion, implementation of recursive functions
* Solving problems: choice of data structures and algorithms, pseudocode and the language of algorithms
* The timing and efficiency of algorithms; Greek notation, running time functions
* Searching: linear, binary, searching trees
* Sorting: bin sort, bubble sort, insertion sort, selection sort, heap sort, merge sort, quick sort, multi-field
* Lists: array-based list implementation, linked list implementation ; Linked Lists
* Stacks: implementations, basic operations, push, pop, peek, applications
* Queues: implementations, basic operations, enqueue, dequeue, peek, applications; Priority Queues, sorts
* Trees: general trees, binary trees, binary search trees, traversals, searches, using trees
* Hashing: simple hash functions, collision resolution techniques
* File access: file access methods, file handling
*Course Schedule and Grading Policies
Due Dates for Major Assignments and Exams
Week Topic
1 Overview of course; Review of CS107 topics
2 Arrays; Multi-dimensional Arrays; ArrayLists
HW1: 9/5
3 ArrayLists; Recursion
4 Input/output; File input/output; Java Exceptions (Java runtime errors: trapping, handling, generating)
HW2: 9/19
5 Classes and objects
1st Midterm, 9/25
6 Classes and objects (continued)
HW3: 10/3
7 Classes and objects (continued)
8 Object-oriented programming: encapsulation, inheritance, polymorphism
HW4: 10/17
9 OOP (continued)
HW5: 10/24
10 OOP (continued)
2nd Midterm, 10/30
11 OOP (continued)
HW6: 11/7
12 OOP (continued)
13 GUI programming
HW7: 11/21
14-15 Stacks; Queues; Lists; Linked Lists; Binary Trees; Binary
Search Trees
HW8: 12/5
Final Exam, Section 1 (TTH 1600-1715):
Tue., Dec. 16, 2014, from 3:30pm-5:30pm
Final Exam, Section 2 (TTH 1400-1515):
Tue., Dec. 16, 2014, from 1:00pm-3:00pm
Scored activities and weighting by percentage of total score:
Programming assignments (100 points, 8 at 12-13 points each, 20%)
First Midterm (100 points, 20%)
Second Midterm (100 points, 20%)
Final Exam (200 points, 40%)
Grading Scale:
A 95% and above
A– 90%
B+ 87%
C+ 75%
C 70%
C– 65%
B 83%
B– 80%
D
F
55% below 55%
Readings
Ch 1-5
Ch 6
Ch 6; Ch 5
Ch 7
Ch 8
"
"
Ch 9
"
"
"
"
Ch 10
*Other Course Policies
Special Assistance: If you are a student with a disability and believe you will need accommodations for this class, it is your responsibility to contact Student Disability Services at (619) 594-6473. To avoid any delay in the receipt of your accommodations, you should contact Student Disability Services as soon as possible. Please note that accommodations are not retroactive, and that accommodations based upon disability cannot be provided until you have presented your instructor with an accommodation letter from
Student Disability Services. Your cooperation is appreciated.