CS2 Syllabus

The CS2 course introduces object-oriented programming, data structures, and more sophisticated algorithms than in CS 171 (Computer Science I) which is a prerequisite for this course. You are not expected to have any prior experience with Java. In terms of the ACM’s Computer Science Curriculum 2013, this course addresses the following knowledge areas: • Algorithms and Complexity (AL) • Discrete Structures (DS) • Programming Languages (PL) • Software Development Fundamentals (SDF) • Software Engineering (SE)

This course is a required intro-level course for two of the three Lewis & Clark CS departmental majors: Computer Science and Computer Science and Mathematics.

TEACHING PAPER: Process Oriented Guided Inquiry Learning (POGIL) in Computer Science

This Teaching Paper is an introduction to how to do POGIL in an introductory computing classroom. POGIL is an evidence-based instructional strategy that incorporates collaborative learning practices that can be useful for creating inclusive student community that can benefit students from traditionally underrepresented populations. In a POGIL classroom, student teams work on activities that are specifically designed to guide them to discover and understand core concepts (the guided inquiry) together.

Virtual Pets and ADTs

In this lab students are to create a program in which the user interacts with virtual pets with different needs. Students are first asked to plan and design classes in the form of ADT's with their fellow classmates. Once they are designed, students are asked to work individually to implement the classes.

Embedding Messages in Images

In this laboratory, students are asked to embed a message within an image in order to send an email to a friend through an unsecured site. Students will design an algorithm for encryption/ decryption and compute Big-O for each.

Backtracking and Caves

In this lab, students apply the CS concepts of stacks and backtracking by writing a program to explore all accessible locations within a cave and find as much treasure as possible. Choosing an appropriate algorithm and set of data structures will prove crucial to how difficult the lab will be.

Beetle

In this lab, students dissect a working implementation of the Beetle (Cootie) game using process oriented guided inquiry learning (POGIL). Learning objectives include understanding class anatomy, using objects, and problem solving. This lab allows students to read an existing program rather than creating one from scratch.

The author of this material was awarded a 2017 NCWIT Engagement Excellence Award for this and two other of his POGIL assignments. Learn more about the award at https://www.ncwit.org/project/ncwit-engagecsedu-engagement-excellence-awards.

Engagement Excellence

Maze

In this project, a student (or a pair of students) completes a Java program that generates and then solves a maze. A skeleton file is provided so that the student need only complete several methods. JUnit tests provide instant feedback on whether each method has been implemented correctly. Learning objectives include sophisticated use of recursion and arrays (including three-dimensional arrays and fill pointers).

Towers of Hanoi

In this lab, students using process oriented guided inquiry learning (POGIL) dissect a program that solves the Towers of Hanoi puzzle. Three increasingly sophisticated implementations are provided: one that hard-codes the solution, one where methods call other methods to solve simpler problem instances, and one using recursion. Learning objectives include understanding recursion and critical thinking. This lab allows students to read an existing program rather than creating one from scratch.

The author of this material was awarded a 2017 NCWIT Engagement Excellence Award for this and two other of his POGIL assignments. Learn more about the award at https://www.ncwit.org/project/ncwit-engagecsedu-engagement-excellence-awards.

Engagement Excellence

Anagrams

In this lab, students dissect a working implementation of an Anagrams game using process oriented guided inquiry learning (POGIL). Learning objectives include tracing through a sequence of method calls, JUnit testing, and information processing. This lab allows students to read an existing program rather than creating one from scratch.

Domineering

In this project, a student (or a pair of students) completes a Java implementation of the Domineering board game. Advice is provided on breaking this program down into methods and testing those methods. Learning objectives include using multidimensional arrays, developing a simple GUI and manually testing individual methods.

Subscribe to Baccalaureate Colleges - Liberal Arts