The course focuses on developing algorithms and their implementation in a higher-level programming language, emphasizing adhering to proper design principles and incorporating advanced programming concepts. A key aspect of the curriculum involves introducing students to algorithm performance analysis. To complete the course, students will engage in many programming projects.

The primary objective is to deepen students’ understanding of Java programming and foster their ability to assess the inherent trade-offs in constructing solutions through computer programming. The course covers various Java programming techniques, including, but not limited to, information hiding, interfaces, inheritance, polymorphism, exception handling, and recursion. Additionally, students will explore standard Java Collections classes and delve into elementary run-time analysis of algorithms.

COS 161 represents the second installment in an introductory sequence within the field of computer science. Completing this course is a prerequisite for the Computer Science major, and students are encouraged to review the complete requirements for the Computer Science program.

Prerequisite: Grade of C or higher in COS 160 or permission of instructor.

Learning Outcomes

By the end of this course, students will be able to:

  • Articulate fundamental concepts related to object-oriented programming, emphasizing the role and significance of classes in Java.
  • Demonstrate an understanding of the principles of class design and object-oriented programming by explaining the relationships between classes, objects, and methods.
  • Apply knowledge of classes to design and implement effective solutions, demonstrating proficiency in creating and utilizing courses in Java.
  • Analyze and evaluate the effectiveness of class hierarchies and relationships in solving complex programming problems.
  • Assess the trade-offs involved in different class design choices.
  • Create and implement well-designed class structures to solve real-world programming challenges.
  • Synthesize their understanding of classes, inheritance, and polymorphism to develop robust and scalable software solutions.

Textbook

Reges, S. & Stepp, M. (2020). Building Java Programs: A back to basics approach (5th ed.). Pearson. ISBN: 978-0135471944.

Syllabus

Spring 2024

Offered

Fall and Spring Semesters