Hi There!

I'm Dan Schlegel, an Assistant Professor in the Computer Science Department at SUNY Oswego

CSC241 – Spring 2018

Abstract Data Types and Programming Methodologies


Prof. Daniel R. Schlegel, 395 Shineman Center, daniel.schlegel@oswego.edu
Office/Lab hours: Thursday 9:30-11:30am; Friday 12:30-1:30pm; by appointment
Section 800: MWF 9:10-10:05pm, Shineman 122
Teaching Assistants: Sushmita Banerjee, Tara O’Grady, Anne Reynolds, and Yingying Xia

Weekly Meeting Schedule:

Shineman 122
Shineman 122
Shineman 122
9:30Dan's Office/Lab Hours
10:30Lab Section L51
Shineman 446
Sushmita's Office Hours
Shineman 446
11:30Lab Section L52
Shineman 446
12:30Lab Section L53
Shineman 446
Dan's Office/Lab Hours
1:30Annie's Office Hours
Shineman 446
4:00Lab Section L54
Shineman 446
4:30Yingying's Office Hours
Shineman 446
Tara's Office Hours
Shineman 446

Course Description:

A developing computer scientist must understand and explain how their proposed data structure and algorithmic solutions compare to other solutions in terms of complexity, run time, and resource requirements. This course introduces students to traditional techniques used to describe such solutions. In addition, we will look at classic data structures and their applications in order to expand the depth and breadth of a student’s knowledge.

This course is intended to challenge the student to design and implement a large-scale software system based on specifications prepared by the instructor. Throughout the semester, each student will need to identify appropriate design elements and justify their selections.

Course Objectives:

To employ object-oriented design techniques to model problems and solutions.
To employ decomposition techniques to break a program into smaller pieces
To analyze algorithmic solutions using asymptotic notation
To demonstrate effective use of abstract data types (ADTs), e.g., stacks, queues, lists, hash tables, trees, etc., in their designs
To demonstrate correct use of recursive algorithms and data structures
To articulate the advantages and disadvantages of competing algorithmic solutions


Recommended: Koffman, E.B. and Wolfgang, P.A.T., Data Structures: Abstraction and Design Using Java, 3e. Wiley, 2015.

Useful Resources:

Introduction to Computer Science Using Java
Data Structures @ Wikibooks
Data Structure Visualizations
Java Tutorials @ Oracle
Java 8 Standard Libraries @ Oracle
Java on Lynda.com
GNU Emacs Reference Card
Compiling on the Command Line Workshop Activity (by Oswego CSA)

Attendance Policy and Classroom Etiquette:

As per college policy, attendance in all sessions is obligatory. If you cannot attend a class meeting due to religious, athletic, health related circumstance, or circumstance of particular hardship, please notify me in advance via email. Please be ready to present proof, if necessary. Cell phones and headphones should not be out or used during lecture, and laptops should only be used for taking notes (I don’t recommend this). If use of any electronics becomes districting to other students I reserve the right to discontinue the allowance of their use.


All assignments will be completed alone, but working together without writing or sharing code to come up with general solutions is encouraged. The assignments are difficult, and I recommend starting work on them early, avoiding any tendency toward procrastination. You should plan on spending at least 10 hours per week on course work outside of class.

You will complete all assignments using a text editor, NOT an IDE like Netbeans or Eclipse. I will use GNU Emacs much of the time, but you are free to use Vim or a less fully-featured editor like nano or Notepad++ (but don’t expect me to know how to use it :)).


There will be several structured labs assigned during the semester (roughly one every 2 weeks). You will complete these during your specified lab period, and the supervising TA will sign your lab sheet when the lab has been completed to specifications. Labs may be submitted during the lab period for which it was assigned, or the following lab period. There is no late or partial credit available.

After you have completed the assigned lab, you should feel free to use the lab period as a kind of office hours to ask the supervising TA for help on issues you’re experiencing in class, including on homework. Keep in mind that this will only be assistance at the most basic level, clarifying confusions and pointing you in appropriate directions – you are expected to complete the work on your own.


Assignments will be submitted via Blackboard and graded according to the grading criteria. There may be in-class presentations of your work. 

You will be able to either submit a single assignment late by up to one week, or resubmit a single assignment to be re-graded, provided it is submitted before the next assignment is due, and that you submitted compiling code by the original deadline. In either case, submit the assignment on Blackboard and send me an email to let me know you have done so and I will grade it.

It is expected that each person participate during each class. As discussed above, attendance is required.

Each exam question will be assigned a point value (generally some multiple of 3 depending on difficulty), where the following scheme will be used in grading it:

0 – Did not attempt / No serious attempt
1 – Mostly incorrect solution
2 – Somewhat incorrect solution
3 – Perfect solution

If the problem is a multiple of 3, then intermediate scores will be given as appropriate. The total points received on all questions will then be summed and divided by the points possible and scaled as appropriate according to the percentages given below.

Exam 115%
Exam 215%
Final Exam20%

You may not receive a grade more than one letter grade above min(exams, assignments). That is, if your exam average is D, the best grade you can achieve in the course is a C. Likewise if you receive an E average on your assignments, the highest grade you can expect is a D.

The default grading for the course will be along the university’s standard grading curve:

A: 93-100C+: 77-79
A-: 90-92C: 73-76
B+: 87-89C-: 70-72
B: 83-86D+: 67-69
B-: 80-82D: 60-66
 E: 0-59

A more generous curve may be used, but should not be expected.


During the semester we aim to cover the following topics:

Object Orientation
Problem-solving Techniques
Sorting Algorithms
Basic Search Algorithms
Lambdas and Streams in Java
Asymptotic Analysis
Data Structures

This syllabus and the course schedule are subject to change by the instructor. All changes and related justifications will be announced in class, and updates will be reflected in this web version.

Lecture slides will be maintained on Blackboard, but many lectures will include use of the whiteboard which may not be reflected in notes elsewhere.

1Monday1/22First day of class
Syllabus and Project Overview
Assignment 1 Due 2/4, 11:59PM on Blackboard
Lab 1: Development Environment Configuration
Be sure to answer office hours survey!
Wednesday1/24Brief presentation from Computer Science Association
Quick Gradle / Error Prone Introduction
Object Orientation In Java Review / Introduction
Friday1/26Object Orientation In Java Review / Introduction (continued)
Class Code
2Monday1/29Object Orientation In Java Review / Introduction (continued) - Enums and Class Design
Class Code
Lab: Homework / Environment Setup Help
Wednesday1/31Add deadline
Object Orientation In Java Review / Introduction (concluded)
Value vs. Reference
Class Code
Friday2/2OO Concepts: Inheritance
Class Code
3Monday2/5OO Conceps: Abstract Classes and Interfaces
Assignment 2 Due 2/18, 11:59PM on Blackboard
Lab 2: Inheritance and Abstract Classes (on Blackboard)
Class Code
Wednesday2/7Class Cancelled
Friday2/9Drop deadline
OO Concepts: Interfaces
The Comparable interface
Class Code
4Monday2/12OO Concepts: Interfaces wrap-up, Polymorphism
Lab: Finish up Lab 2; Assignment 2 help!
Readings: Parsing an XML File Using SAX
Class Code
Wednesday2/14Event-Driven Programming Intro; XML Parsing
Class Code
Friday2/16JavaFX Tutorial
5Monday2/19Class Cancelled; Labs Still Scheduled!
Lab 3: SAX Parsing
Assignment 3 Due 3/4 3/6, 11:59PM on Blackboard
Wednesday2/21Review for Exam 1;
Preview of Part 2
Friday2/23Exam 1
6Monday2/26Intro to Asymptotic Analysis
Wednesday2/28Expandable Array
Class Code
Exam 1 Corrections Due 3/7 at the beginning of class
Friday3/2ExpandableArray, continued
Class Code
Java 8 ArrayList source
If you are doing an assignment 2 resubmission, they are due 3/9, 11:59pm on Blackboard
7Monday3/5Asymptotic Analysis, continued
Linked Lists
Readings: Java Generics Tutorial
Lab: Array Based List Structures
Wednesday3/7Linked Lists, continued
Assignment 4 Due 3/25 4/1, 11:59pm on Blackboard, demoed in lab 4/2
Friday3/9Linked Lists, continued
Java Generics
8Monday3/12No Class - Spring Break
Wednesday3/14No Class - Spring Break
Friday3/16No Class - Spring Break
9Monday3/19Iterator and Iterable
Class Code
Wednesday3/21Linked List Variations: Circular, Doubly Linked
Stacks and Queues
Class Code
Friday3/23Insertion Sort
10Monday3/26Insertion Sort, concluded
Lab: Doubly Linked Lists
Assignment 5 Due 4/8, 11:59pm on Blackboard
Wednesday3/28Recursion, Tree Traversal
Friday3/30No Class - Easter Weekend
11Monday4/2Tree Traversal
Recursive vs. Iterative Solutions
In-order Tree Traversal Without Recursion
Class Code
Withdraw Deadline
Wednesday4/4No Class - Quest Day
Friday4/6Exam 2
12Monday4/9Depth-First and Breadth-First Search
Wednesday4/11Assignment 6 due 4/24 4/29, 11:59pm on Blackboard
Binary Search Trees
Friday4/13Binary Search Trees, concluded.
13Monday4/16Lambda Expressions in Java 8+
Functional Interfaces
Lab 6: Binary Search Trees
Wednesday4/18Reading: Stream Tutorial
Java Streams
Friday4/20Go over Exam 2
How to write a good driver class
14Monday4/23Selection Sort
Comparison Sort Visualizer
Wednesday4/25N-squared search benchmarks
Class Code
Merge Sort
Assignment 7 due 5/11, 4PM demoed in person
Friday4/27Merge sort
15Monday4/30Merge sort, concluded
Quick sort
Class Code
Lab 7: Lambdas and Streams
Wednesday5/2Quick sort
CSA Review Session, 6PM in 425
Friday5/4Last day of class
Quick sort, concluded
Final Exam Study Guide
Finals WeekWednesday5/9Final Exam 8-10am, 122 Shineman

Academic Integrity:

While it is acceptable to discuss general approaches with your fellow students, the work you turn in must be your own. You may not turn in code found on the internet. If you have any problems doing the assignments, consult the instructor. Please be sure to read the webpage, “Academic Integrity“, which spells out all the details of this, and related policies. See my page on plagiarism for an explanation of what I consider cheating.

Disability Statement:

If you have a disabling condition, which may interfere with your ability to successfully complete this course, please contact the Office of Disability Services at dss@oswego.edu and x3358.