Hi There!

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

CSC241 – Spring 2024

Abstract Data Types and Programming Methodologies

Quick Links: Grading | Daily Schedule | Brightspace | Class Code (GitHub)

Instructor:

Prof. Daniel R. Schlegel, 464 Shineman Center, daniel.schlegel@oswego.edu
Office/Lab hours: Monday 2-3, Tuesday 10-12, and by appointment. Email any time with questions!
Section 820: MWF 12:40-1:35pm, Shineman 170

Course Description:

A developing computer scientist must understand and explain how their proposed data structures 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 software 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

Textbooks:

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 S
tructures @ Wikibooks
Data St
ructure Visualizations
Java Tut
orials @ Oracle
Java 8 Standar
d Libraries @ Oracle
JavaFX API
Java on Lynda.com
GNU Emacs Reference Card
Compiling on the Command Line Workshop Activity (by Oswego CSA)

Attendance Policy:

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. 

Modality:

We meet in person three times a week. There will be no recording, and I won’t work through the content with you in a one-on-one fashion during office hours or an appointment – basically, if you miss class then you missed out on what you signed up for when registering for the class and you will have to work through the content independently. Of course, I will answer questions about the content, if you have any, and there are exceptions for excused absences due to illness etc.

“Go Remote” due to COVID-19: If we are forced to “go remote” for a prolonged period during the semester then we’ll hold class over Zoom and make a Zoom link available on course webpage, as well as email it with the weekly content. This is definitely a sub-par, miserable excuse for a class meeting. We’ll do this only if circumstances force us.

“Go Remote” Days Due to Weather: In short, we value our snow days and will do what is reasonable to make sure that no commuter is in danger, while also maintaining academic integrity. In long, the concept of a “Go Remote” day due to weather is crap. We deserve our snow days. Yes, snow days are a serious inconvenience and create a content crunch, especially if classes are cancelled indiscriminately. But, snow days are also a weather-gifted day of respite and nearly everyone appreciates an occasional day of rest. We may choose to skip certain topics during the semester so that we can afford to cancel class on a “Go Remote” day. If it turns out that many classes are cancelled due to weather, then we will have to assign independent reading / activities to cover some of the content.

Classroom Etiquette:

A positive learning environment relies upon creating an atmosphere where all students feel welcome. Discussion is meant to allow us to hear a variety of viewpoints. This can only happen if we respect each other and our differences. Hostility and disrespectful behavior is not acceptable.

Cell phones and headphones should not be out or used during lecture, and laptops should only be used for taking notes. If use of any electronics becomes distracting to other students I reserve the right to discontinue the allowance of their use.

The current university policy will decide the class policy on masks and social distancing. Regardless of class policy, you can do more! If you wish to wear a mask, please do so! If you are sick with a potentially communicable disease, you should wear a mask and seriously consider staying home to prevent the spread of disease. 

Assignments:

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.

Grading:

Assignments will be submitted via Brightspace and graded according to the grading criteria. Code which does not compile or immediately crashes will receive no credit. There may be in-class presentations and/or live demos of your work at various points in the semester.

Assignments may be submitted up to five calendar days late with a 5% per day penalty. After five days no credit will be assigned. Outside of this late policy, no late assignments will be accepted.

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.

AssessmentPoints
Assignments (7)500
Midterm Exam200
Final Exam300
Total1000

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.

Schedule/Outline:

During the semester we aim to cover the following topics:

  • Object Orientation
  • Problem-solving Techniques
  • Recursion
  • 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, when used, will be maintained on Brightspace, but many lectures will include use of the whiteboard which may not be reflected in notes elsewhere.

WeekDayDateTopicAssignment/Assessment
1Monday1/22First Day of Class
Syllabus & Overview
Project Description
Assignment 1 due 1/29, 11:59PM on Brightspace
Wednesday1/24Short Exercise
Anatomy of a Class (Review)
Object Orientation
Friday1/26Error Prone Setup Tutorial
Class Design
Interfaces + Inheritance
2Monday1/29Let's talk about 'this'
Class Design Exercise
Interfaces
Wednesday1/31InterfacesAssignment 2 due 2/9, 11:59PM on Brightspace
Friday2/2Inheritance
Enums, Records
3Monday2/5Abstract Classes
Assignment Q&A
Event-Driven Programming Introduced
Wednesday2/7Event-Driven Programming
Introduction to XML
Examples for XML files: GraphML
Friday2/9XML Example, continued
Assignment Q&A
4Monday2/12OO Class Design ExerciseAssignment 3 due 2/23, 11:59PM on Brightspace
Wednesday2/14OO Class Design Exercise
Friday2/16Data Structures Intro
5Monday2/19Expandable Array
Wednesday2/21Expandable Array
Friday2/23Q&A, Work Day
6Monday2/26Project Discussion - re-submit with test by Thurs AM!Assignment 4 due 3/18, 11:59PM on Brightspace
Wednesday2/28Expandable Array Returns
Friday3/1Midterm Discussion
Midterm Study Guide
7Monday3/4Linked List Introduction
Wednesday3/6Linked Lists, Continued
Friday3/8Midterm ExamMidterm Exam
8Monday3/11No Class - Spring Break
Wednesday3/13No Class - Spring Break
Friday3/15No Class - Spring Break
9Monday3/18Exam Discussion, Assignment 4 Discussion
Wednesday3/20Linked Lists, Continued
Friday3/22Writing Unit Tests with JUnit
JUnit 4 Tutorial
Assignment 5 due 4/5, 11:59PM on Brightspace
10Monday3/25Completing our add linked list add method
Java Generics Intro
Wednesday3/27Iterator, Iterable, Comparable, Oh My!
Friday3/29Doubly-Linked and Circular Lists
11Monday4/1Stacks, Queues
Wednesday4/3O(n^2) Sorting Algorithms
Friday4/5Trees, introduced
12Monday4/8Solar Eclipse - No Class
Wednesday4/10Trees, continued
Binary Search Trees
Friday4/12BST ImplementationAssignment 6 due 4/22 11:59PM on Brightspace
13Monday4/15BST, visualized
Wednesday4/17Quest Day, No Class
Friday3/19Java Collections Framework
14Monday4/22Merge SortAssignment 7 due 5/1 11:59PM on Brightspace
Wednesday4/24Merge Sort Implementation
Friday4/26Merge Sort Implementation + Benchmarking
15Monday4/29Final Exam Study Guide
Quick Sort
Wednesday5/1
Friday5/3
Finals WeekTBD5/10Friday, 5/10, 10:30-12:30Final Exam

Mental Health:

Stress is a normal and important part of our human experience. However, there are times when your stress will exceed your coping skills and resources. The changes that we have experienced due to the COVID-19 pandemic have impacted us all in various ways and are expected to continue to do so for the foreseeable future. Your health and well-being are critical components in your ability to learn. If you find that you are struggling to engage and function, please reach out. Resources are available, including Counseling Services, oswego.edu/csc, which provides brief and confidential counseling support to enrolled students (covered by your student health fee.) After-hours crisis coverage is available by calling Counseling Services at 315.312.4416 and listening to the available options. The CrisisTextLine can be accessed by texting GOT5U to 741741. Lastly, the Oz Concern Navigator, oswego.concerncenter.com, is now available to point you to additional resources to help you address your concerns.

Academic Integrity:

SUNY Oswego is committed to Intellectual Integrity. Any form of intellectual dishonesty is a serious concern and therefore prohibited. You can find the full policy online. 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. See this page on plagiarism for an explanation of what we consider cheating. All parties involved in academic integrity violations will receive a score of zero for that quiz/exam/assignment, and all violations will be reported. Repeat violations, including across semesters, will result in failing the course.

Accessibility:

If you have a disabling condition which may interfere with your ability to successfully complete this course, please contact Accessibility Resources located at 155 Marano Campus Center, phone 315.312.3358, access@oswego.edu

Clery Act/Title IX Reporting:

SUNY Oswego is committed to enhancing the safety and security of the campus for all its members. In support of this, faculty may be required to report their knowledge of certain crimes or harassment. Reportable incidents include harassment on the basis of sex or gender prohibited by Title IX and crimes covered by the Clery Act. For more information about Title IX protections, go to https://www.oswego.edu/title-ix/ or contact the Title IX Coordinator, 405 Culkin Hall, 315-312-5604, titleix@oswego.edu. For more information about the Clery Act and campus reporting, go to the University Police annual report: https://www.oswego.edu/police/annual-report.