ICS 211: Introduction to Computer Science II
Description: Reinforce and strengthen problem-solving skills using abstract data types and introduce software development practices. Emphasize the use of searching and sorting algorithms and their complexity, recursion, object-oriented programming, and data structures.
Objectives
- Learn and implement standard data structures, including linked lists, stacks, queues, hash tables, and binary trees.
- Learn and implement standard algorithms for sorting and searching and tree traversal
- Learn and use the basics of algorithm analysis and complexity, including big-O notation
- Be exposed to software engineering techniques such as: abstract data types, separation of definition and implementation, encapsulation, information hiding, testing and code reviews.
- Learn and use object oriented programming in Java by designing, implementing, reviewing and testing solutions to problems
- Learn to write algebraic equations in prefix, infix and postfix notation using preorder, inorder and postorder traversals
- Learning to program in Java is only one of the goals for this course, but may be the most important: fluency in Java is needed to apply many of the other tools and information presented in this course as well as in subsequent ICS courses.
Course Learning Outcomes
- Use and implement abstract data types such as lists, stacks, queues, and trees.
- Select the appropriate searching or sorting algorithm base on the algorithm’s behavior.
- Develop recursive algorithms and programs.
- Use standard libraries or packages as well as advanced object-oriented programming techniques (polymorphism, inheritance, and encapsulation).
- Produce robust and secure programs using exception handling and extensive program testing.
Program Learning Outcomes
- a. Students can apply knowledge of computing and mathematics appropriate to the discipline
- b. Students can analyze a problem, and identify and define the computing requirements appropriate to its solution
- c. Students can design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
- i. Students can use current techniques, skills, and tools necessary for computing practice
- j. An ability to use and apply current technical concepts and practices in the core information technologies. [BA IT only]
Prerequisites: grade of “B” or higher in 111 or consent.
Textbook(s): Data Structures: Abstraction and Design Using Java, Second Edition, by Elliot B. Koffman and Paul A. T. Wolfgang, Wiley 2010.
Grading
- Two midterm exams and a final (~30%)
- Assignments (~40%)
- Lecture quizzes (~15%)
- Lab attendance (~15%)
Schedule
- Week 1 - Java Review
- Week 2 - Object Oriented Programming
- Week 3 - Simple Sorting
- Week 4 - Array Lists
- Week 5 - Linked Lists
- Week 6 - Iterators
- Week 7 - Midterm 1
- Week 8 - Stacks
- Week 9 - Queues
- Week 10 - Recursion
- Week 11 - Trees
- Week 12 - Binary Data
- Week 13 - Midterm 2
- Week 14 - Complex Sorting Algorithms
- Week 15 - Hashtables
- Week 16 - Course Review