CSE 22 Introduction to Computer Science II (2017-2018)

CSE 22 Introduction to Computer Science II

(Not required for any major.)
Catalog Data:

CSE 22 Introduction to Computer Science II (Credit Units: 6) Abstract behavior of classic data structures (stacks, queues, sorted and unsorted maps), alternative implementations, analysis of time, and space efficiency. Prerequisite: CSE21/ICS 21 or ICS H21 with a grade of C or better. Only one course from CSE22/ICS22, ICS H22, CSE42/ICS32, CSE43/ICS 33, EECS 10, EECS 12, MAE 10 or Informatics 42 may be taken for credit. Same as I&C SCI 22. Only one course from CSE 22, I&C SCI 22, I&C SCI H22, CSE 42, I&C SCI 32, CSE 43, I&C SCI 33, IN4MATX 42, EECS 10, EECS 12, ENGRMAE 10 may be taken for credit. (Design units: 0)

Required Textbook:
None
Recommended Textbook:
. Edition, , 1969, ISBN-13 978-0470383261.

References:

Horstmann, Cay. Java Concepts, 4th Edition, Wiley & Sons, 2005 and other Java references as needed.

Coordinator:
Richard Eric Pattis
Relationship to Student Outcomes
No student outcomes specified.
Course Learning Outcomes. Students will:

1. Analyze algorithms for time and space efficiency.

2. Be familiar with a recurrence relation describing the execution time of simple recursive code.

3. Describe the abstract behavior of classic data structures.

4. Be familiar with recursion, sorting, object-oriented programming, Java programming, and alternative approaches to program design.

Prerequisites by Topic
  • Mastery of ICS/CSE 21 material, as demonstrated by C or better:
  • Java programming using:
  • Basic statements (assignment, I/O)
  • Basic data types (int, long, double, boolean)
  • Selection (if, switch)
  • Loops and loop control (for, while, do; the dangers of break)
  • Methods/functions (defining, calling, parameter passing)
  • Exception handling as applied to files and scoping rules.
  • Identify the appropriate uses of data structures and be able to read code to determine whether they are properly and reasonably implemented.
  • Write code to implement conventional algorithms.
  • Understand the fundamental concepts of Object Oriented Programming
Lecture Topics:
  • Enumerations in Java
  • Exception handling in Java
  • Singly-linked lists, generic classes, iterations and iterators
  • Importance of automated testing, test-driven development, unit testing using JUnit
  • Inheritance and polymorphism
  • The Object class
  • Algorithm analysis and O-notation
  • Linear and binary search, ArrayLists and arrays
  • Performance comparison of ArrayLists and linked lists, variations of linked lists;
  • The need for "classic data structures", Stacks, Implementing stacks using linked lists and ArrayLists
  • Queues, implementing queues using linked lists and arrays
  • Maps, the case for non-linear data structures, binary search trees, hash tables
  • Interfaces, the AutoClosable interface, comparability and natural orderings, distinction between abstract classes and interfaces
  • Programming paradigms, introduction to functional programming in Racket
  • Introduction to sorting problem, insertion sort and selection sort, generalizing sorting with comparability
Class Schedule:

Meets for 3 hours of lecture, 2 hours of discussion and 6 hours of laboratory each week for 10 weeks.

Computer Usage:

An editor, such as TextPad, Sun Java 2 Standard Edition JDK (J2SE 5.0), DrScheme on a windows platform.

Laboratory Projects:
  • Lab #1-Perfect Candidate
  • Lab #2-You Won't Find Me There
  • Lab #3-What's Simple Is True
  • Lab #4-Gone to the Movies
  • Lab #5-Signal to Noise
  • Lab #6-Espresso Love
Professional Component

Contributes towards the Computer Science and Engineering major requirements for Engineering and Computer Topics courses.

Design Content Description
Approach:
  • Approach:
  • Lectures:
  • Laboratory Portion:
Lectures: 0%
Laboratory Portion: 0%
Grading Criteria:
  • Six programming projects: 40% (weighted equally at approx. 6.7% each)
  • Midterm Exam: 25%
  • Final Exam: 35%
  • 100%
Estimated ABET Category Content:

Mathematics and Basic Science: 0.0 credit units

Computing: 6.0 credit units

Engineering Topics: 6.0 credit units

Engineering Science: 6.0 credit units

Engineering Design: 0.0 credit units

Prepared:
February 22, 2017
Senate Approved:
May 3, 2013
Approved Effective:
2013 Winter Qtr