CS2013 Course Syllabus Spring 2017 Lecture: Friday 8:00 A.M. 9:40 A.M. Lab: Friday 9:40 A.M. 12:00 Noon Instructor Course name Credits Contact hours Text book Course Information Course Goals Jungsoo (Sue) Lim, Reem Alqahtani Email: jlim34@calstatela.edu Office hours: 1. Monday, Wednesday 9:00 AM 10:30 AM at E&T B10 2. Monday, Wednesday 4:00 PM 5:00 PM at E&T A310 3. By Appointment Programming with Data Structures 3 units 4 hours/week Required: Introduction to JAVA Programming, by: Daniel Liang, 10th Edition ISBN-13: 978-0-13-376131-3 a) Advanced programming techniques; elementary data structures such as dynamic arrays, linked lists, stacks, queues, and trees, sorting and searching algorithms. Laboratory activities on problem analysis and software development. b) Prerequisites: CS202 c) Recommended Prerequisite: Math 207, Math 248 d) This course is required in the BS program The Student Learning Outcomes that are addressed by the course are: SLO #2: Students will be able to demonstrate fluency in at least one programming language and acquaintance with at least three more. SLO #3: Students will have a strong foundation in the design, analysis, and application of many types of algorithms. SLO #5. Students will have the training to analyze problems and identify and define the computing requirements appropriate to their solutions. SLO #6. Students will have the training to design, implement, and evaluate large software systems working both individually and collaboratively. SLO #7. Students will be able to communicate effectively orally and in writing. Other outcomes of instruction: At the end of the course students are able to: Use recursion as a tool to solve some specific problems. Know the standard Abstract Data Types, and their implementations. Study and use different available JAVA Data Structures. Know the standard searching and sorting algorithms and their efficiency. Page 1 of 5
Brief list of topics to be covered Understand the complexity analysis for some simple software. Recursion Generics Java Collections Framework Algorithm Efficiency (brief) Sorting Lists, Stacks, Queues, and Priority Queues Binary Search Trees Graphs and Applications (Optional) Multithreading Laboratory Projects Out of class Assignments Quizzes Each week students will complete a 3-hour lab projects on selected topics, except the exam weeks. At the end of each lab students will turn in lab programming assignment. Each week students will have an assignment due on the following week, except the exam weeks. For these assignments students may required to complete an unfinished implementation, design/implement a system, produce system document (pseudo code, UML, etc), and prepare a user s manual. Each class will have in class quiz. Grading Policy Quizzes: 10% Laboratory assignments: 10 % Out of class assignments: 20% 2 Midterm: 30% Final: 30% A-, A 90 100 B-, B, B+ 80 89 C-,C,C+ 65 79 D,F <65 Academic Integrity ADA Statement Cheating will not be tolerated. Cheating on any assignment or exam will be taken seriously. All parties involved will receive a grade of F for the course and are reported to the proper authorities. Reasonable accommodation will be provided to any student who is registered With the Office of Students with Disabilities and requests needed accommodation. Page 2 of 5
CS203 Course Weekly Schedule Week Lecture topics 1 Review of Polymorphism and Java FX 2 Recursion (Ch 18) 3 Generics (Ch 19) Encapsulation data protection Inheritance super class/sub class, constructor chaining, overriding vs. overloading Polymorphism dynamic binding, declared type, actual type, casting (implicit casting/explicit casting, up casting/down casting) Java FX creating application, inserting components, adding event handlers, and adding UI controls. Review what a recursion method is and its benefits Develop recursive methods Review how recursive methods calls are handled in call stack. Solve problem using recursion Solve the Tower of Hanoi problem using recursion Draw fractals using recursion Review tail-recursive methods Define generic classes and interfaces Define and use generic methods and bounded generic types Develop a generic sort method to sort an array of Comparable objects Design and implement generic matrix classes 4 Java Collection Framework (Ch 20) Overview of Lists Overview of Stacks Overview of Queues Overview of Priority Queues Sets and Maps (Ch 21) Overview of HashSet, LinkedHashSet, and TreeSet Overview of HashMap, LinkedHashMap, and TreeMap 5 Developing efficient algorithms (Ch 22) Estimate algorithm efficiency using the Big O notation Determine the complexity of various types of algorithms Analyze the binary search algorithm Analyze the selection sort algorithm Page 3 of 5
6 Developing efficient algorithms (Ch 22) Continued Analyze the Tower of Hanoi algorithm Design efficient algorithms using dynamic programming Backtracking Midterm 1 7 Sorting (Ch23) Analyze time complexity of various sorting algorithms Design, implement, and analyze insertion sort Design, implement, and analyze bubble sort Design, implement, and analyze merge sort 8 Sorting (Ch23) - Continued Design, implement, and analyze quick sort Design, implement, and analyze heap sort Design, implement, and analyze bucket sort Design, implement, and analyze radix sort 9 Implementing Lists, Stacks, Queues, and Priority Queues (Ch 24) Design common features of lists in an interface and provide skeleton implementation in an abstract class Design and implement an array list using an array Design and implement a linked list using a linked structure Design and implement a stack class using an array list and queue class using a linked list Design and implement a priority queue using a heap 10 Binary Search Trees (Ch 25) Design and implement a binary search tree Search an element in a binary search tree Insert/delete an element into a binary search tree Traverse/display elements in a binary tree (in-order, pre-order, post-order, breath first traversal) Implement Huffman coding for compressing data using a binary tree 11 AVL Trees (Ch 26) Overview of AVL tree Understand how to rebalance a tree using various techniques Design the AVLTree class by extending the BST Implementing tree rebalancing algorithms for AVL trees Insert/delete elements in/from AVL tree Analyze the complexity of search, insertion, and deletion operation in AVL Page 4 of 5
tree. Midterm 2 12 Hashing (Ch 27) Overview of hashing Design hash function Handle collisions Open addressing (linear probing, quadratic probing, and double hashing), separate chaining (Optional) Graphs and Applications (Ch 28) Describe the graph terminologies: vertices, edges, simple graphs, weighted/unweighted graphs, and directed/undirected graphs Model graphs using the Graph interface, the AbstractGraph calss, and the UnweightedGraph class Design and implement depth-first-search Design and implement breadth-first search 13 Multithreading and Parallel Programming (Ch30) Overview of multithreading Develop multithread program Overview of race condition and synchronization Use synchronized methods to synchronize threads to avoid race condition Overview of semaphore Control number of concurrent tasks that access a shared resource using semaphores 14 Multithreading and Parallel Programming (Ch30) Continued Overview of deadlock Avoid deadlock using the resource-ordering technique Overview of the life cycle of a thread Develop parallel programs using Fork/Join Framework 15 Review for final exam Page 5 of 5