CSCI 261: Computer Science II

Spring 2023

Contact Info

Instructor: Brad Richards
Lecture: MWF 11:00-11:50, TH 383
Lab: Tu 11:00-12:50, TH 409
Phone: x3579
Email: brichards@pugetsound.edu
Office: Thompson 401
Office Hours: M 12-1:00, T 10:10-10:50, W 10:10-10:50, F 12-1:00 (all via Zoom)
Tutor Schedule: See bottom of the schedule page
CWL Tutors: subject tutors
Course Comments: anonymous comment form
Department Comments: anonymous comment form

Contents

Resources

Covid:

As you're no doubt aware, variants of the Covid virus are still present in the surrounding area. It's highly transmissible, can be passed to (and by) those of us who are vaccinated, and can result in significant long-term illness even if you're vaccinated. Please take all possible precautions to avoid spreading Covid. Do not come to class if you're feeling sick or have had close contact with someone who is. Consider wearing a mask in class. All of my office hours will be held via Zoom, as will our Tuesday labs — at least initially. (Our Zoom meeting room is 988 439 5089. Password and direct link are available on Canvas.)

Schedule

Week Topic Reading Lab    Assignment
1/16 Intro/Review of Object Oriented Programming (Inheritance)
No class Monday
Sections 1.2 & 1.3 Eclipse Demo Optional Practice (soln)
1/23 More OOP (Subtyping, Polymorphism, Interfaces) More on Sections 1.2 & 1.3; Section 1.1 Lab 2 Asmt 1 (solns)
1/30 More OOP (Abstract Classes, Exceptions), Complexity Sections 1.4 & 1.7, start Chapter 2 Lab 3 Asmt 2 (solns)
2/6 List ADT & Implementations Chapter 2 Lab 4  
2/13 Stacks Chapter 3   Exam Tuesday
Topics, Old exam, Old solns, New exam, new solns
2/20 Queues Chapter 4 Lab 5 Asmt 3 (solns)
2/27 More Queues, Recursion Chapter 4 & 5 Lab 6 Asmt 4 (solns)
3/6 More Recursion Chapter 5 Lab 7  
3/13 Spring Break
3/20 Binary Search, Binary Trees Sections 5.1-5.3; 6.1 Lab 8 Asmt 5 (solns)
3/27 More Trees Sections 6.2-6.6; Lab 9 Exam Tuesday
Topics, Old exam, Old solns (and diagram), new solns (and diagram)
4/3 Sets & Maps Section 7.1-7.4   Asmt 6 (files, zip)
4/10 Sorting Section 8.1-8.4 Lab 10  
4/17 More Sorting Section 8.6-8.9 Lab 11 Asmt 7
4/24 Finish Sorting, Graphs Section 8.7; 10.1-10.4 Lab 12  
5/1 Final Week
No Class Friday
    topics, old exam, solns
Final: Wednesday, May 10th, 12-2:00pm in TH383
solutions

Background

This course is a continuation of the topics introduced in CSCI 161. It provides an introduction to the study of fundamental data structures and their associated algorithms, as well as more advanced object-oriented programming techniques. Students will learn will learn about lists, stacks, queues, trees, sorting, searching, abstract data types, and learn how to choose appropriate data structures and algorithms for particular problems. The following course outcomes are drawn from the 2013 international Computer Science Curriculum guidelines. Upon completion of the course, successful students should be able to:

CSCI 261 satisfies the Mathematical Approaches category of the university's core curriculum by developing an appreciation of the power of Computer Science and formal methods to provide a way of understanding a problem unambiguously, describing its relation to other problems, and specifying clearly an approach to its solution. A student in this course will develop a variety of mathematical skills, an understanding of formal reasoning, and a facility with applications. Specifically, this course will provide the student with the ability to analyze a problem, to design a systematic way of addressing that problem (an algorithm), and to implement that algorithm in a computer programming language.

This course builds progressively on previously covered material. Therefore, it is essential to attend all classes and keep up with the reading and the assignments. Students are expected to attend all lectures, with exceptions permitted in case of illness and family emergencies, and should do the assigned readings before the relevent class. The assigned readings listed in the schedule are all from Objects, Abstraction, Data Structures and Design Using Java.

Grading

Your overall grade is composed as follows: Homework for this class will be submitted electronically, and must be turned in by the time specified on the assignment for full credit. Late homework will be subject to a 5% penalty per day, and must be submitted by the final-credit date listed on the assignment for any credit to be awarded. The following grade cutoffs are upper bounds — they might come down, but will not be set higher: A = 95, A- = 90, B+ = 88, B = 83, B- = 80, C+ = 77, C = 73, C- = 70, D+ = 67, D = 64, D- = 60, F = <60. In the weekly labs we will work through structured activities designed to reinforce the course material. These activities will help prepare you for the assignments and exams, and it's important that you attend. The work done during the labs will not be graded. As long as you attend, make a sincere effort to complete the lab, and make reasonable progress, you will receive credit simply for attending.

Community

This course has a diverse population. Some students arrive on day one ready to attempt large, complex programs; other students (the majority of the class, in fact) aren't yet ready. That's fine, and expected; your "readiness" changes over time and reflects your prior experience, rather than your intelligence, your commitment, or your worth as person. The course will work best if we respect and welcome each other no matter what level of "readiness" we are at, and we all support one another in learning.

The goals of this course can only be accomplished in a setting of mutual respect, where ideas, questions, and misconceptions can be discussed with civility. As your instructor, I am committed to creating a classroom environment that welcomes all students, regardless of their identities (e.g. race, class, gender, sexual orientation, religious beliefs). I firmly believe that everyone in the class is fully capable of engaging and grasping the material, and that the world of computing is stronger when it includes the broadest possible set of perspectives. We all have unconscious biases, and I will try to continually examine my judgments, words and actions to keep my biases in check and treat everyone fairly. I hope that you will do the same. If you feel comfortable, please let me know if there is anything I can do to make sure everyone is encouraged to succeed in this class. I will not tolerate behaviors that could negatively affect another student’s classroom experience. I reserve the right to withdraw a student from this class who is repeatedly exhibiting such behavior.

Lectures will begin and end on time, so do your best to get to class before the start of the lecture. Use of cell phones is extremely disruptive — please remember to turn your phones off while in the classroom.

Academic Integrity

The assignments form a crucial part of the course and, unless stated otherwise, students are required to work on them individually. Please ensure that any work you take credit for is your own. Inappropriate collaboration with other students is not permitted and will be subject to severe penalties. In particular, sharing your work in any way with other students (e.g. code inspection, sharing code electronically via email or photos, etc) is inappropriate, as is copying part or all of someone else's work. Code or other hints found online must be attributed, and should not compromise your ownership of the work. Please review the university's Academic Integrity policy and ask me if you have any questions regarding its application to this course.

University, Academic, and Administrative Policies

There are many university policies and resources that offer guidance on how to be safe and make the most of your college education. Here are a few that you should take a moment to review: