Course Syllabus

Course Staff

Instructor

Kevin AngstadtKevin Angstadt (he/him/his)
Office: Bewkes 104
Student Hours: QRC Lounge (outside Valentine 124)

Email: kangstadt@stlawu.edu
Email Hours: I regularly check Email 8-4 Eastern on weekdays.  While I may respond outside those hours, I make no guarantees.
Addressing: I encourage you to call me by any one of the following names.  Please use what makes you feel the most comfortable.

  • Kevin
  • Prof./Dr. Angstadt
  • Prof./Dr. A
  • Prof./Dr. Kevin

Course Information

Fall 2024
Units: 1

Format: In-Person Synchronous

Meets:

  • Section 01: MWF 9:20 AM–10:20 AM Eastern
  • Section 02: MWF 10:30 AM–11:30 AM Eastern

Room: Bewkes 107

Enrollment Restrictions: 

  • Students must have previously passed CS 219 or receive instructor permission

Required Textbooks

We will be referencing the open-source textbook, OpenDSA Data Structures and Algorithms, for this course.  This textbook integrates directly into Canvas under Modules.

As an additional resource, I will be referencing Cormen, Leiserson, Rivest, and Stein’s Introduction to Algorithms, Third Edition for my preparation for the course.  You are not required to read or purchase this book.  However, it is one of the best references for data structures and algorithms in our field.

Important Dates

Event/Action

Date

First Class Meeting

2024-08-28

Last Day to Drop/Add

2024-09-05

Exam 1

2024-10-14

No Class (Mid-Semester Break)

2024-10-18

Last Day to Request Pass/Fail

2024-11-01

Last Day to Withdraw

2024-11-08

No Class (Thanksgiving Break)

2024-11-25 through 2024-11-29

Last Class Meeting

2024-12-11

Final Exam Period (Exam 2)

Section 01: 2024-12-19 (1:30–4:30)

Section 02: 2024-12-16 (8:30–11:30)

All Material Due

2024-12-20

Course Overview and Goals

From the course catalog: An overview of the essential strategies for the organization, retrieval and processing of data. Topics include arrays, lists, stacks, queues, maps, and trees, as well as an introduction to algorithm analysis.

Welcome to Data Structures!  Now that you have a firm background in computer programming, we now begin an in-depth study of what is possible with computers and computation.  Distilled to their core essence, all programs read in data, manipulate it, and then produce data as output.  In this course, we will study various techniques for storing and representing this data.  Unfortunately, there is no single way to store information that is better than the rest, so a key focus of this course is identifying the advantages and disadvantages of each approach.

Our language of choice in this course will be Java; however, many of the topics we cover in this class apply more broadly.  CS 256 is the gateway to the upper-level electives.  As such, we begin our transition away from pure programming and begin to study broader topics in computer science.

At the end of this course, you will be able to:

  1. Explain the difference between an abstract data type and a data structure.
  2. Implement common data structures, such as ArrayLists, LinkedLists, Stacks, Queues, Heaps, Hash Tables, and Binary Search Trees.
  3. Analyze the performance of common data structures.
  4. Identify performance and space trade-offs for different implementations of the same abstract data type.
  5. Design and develop sophisticated programs that solve real-world problems using the data structures covered in this course.

Course Topics

In this course, we explore various approaches for storing and accessing data.  We will also analyze these structures to better understand how each performs. A rough ordering of topics is presented below, but is subject to change as the semester progresses.  The lecture assignments on Canvas maintain a detailed description of topics covered so far in class.

  • Classes and Abstractions
  • Abstract Data Types vs. Data Structures
  • Lists, Stacks, Queues, and Deques
  • Arrays and ArrayLists
  • Complexity Analysis (Big-O)
  • Linked Lists
  • Recursion
  • Priority Queues, Heaps, and Heapsort
  • Hashing and Hash tables
  • Trees
  • Binary Search Trees
  • Balanced Trees
  • Sorting

Course Format

This course is being offered in a fully-synchronous format. We will facilitate your learning of the material through various instructional modalities, including classword and homework. The following subsections describe the various activies you can expect this semester.

Weekly Lectures

Each week, there will be synchronous lectures during our scheduled course time. During these lectures, we will explore the topics covered by this course and develop the skills described in the learning goals section.  Please review the attendance policy below for expectations about your presence at these lectures.

Lectures will be recorded and available on Canvas for students wishing to review material covered in this course.

Weekly Labs

In addition to weekly lectures, we will devote approximately one class a week to hands-on exploration of course topics. The purpose of these labs will be to give you additional opportunities to solve real-world problems and implement the data structures covered in class and the readings. It also provides you with an additional opportunity to ask me questions outside of student hours. 

Most labs will have an associated assignment that you should be able to complete during the scheduled lab time.  While correctness is important, your effort on these assignments will be weighted heavily.  This includes, but is not limited to, thorough commenting of your code.  Lab assignments are due on Gradescope Thursdays at 11:59 PM Eastern.

Programming Projects

Throughout the course of the semester, you will complete four (4) large programming projects.  These assignments are designed to give you additional practice with the material we are covering in class and help you develop your programming skills.  These projects will require substantial time commitments.  Please refer to the individual project specifications as they are released for detailed instructions on how and what to submit and specific due dates.  Points will be deducted for late assignments, and all assignments must be submitted no later than one week after the official due date to receive credit.

You will submit these projects through the St. Lawrence University Grading Server (SLUGS).  This system will run your code against a suite of test cases and give you (near) immediate feedback.  You will typically have five (5) submissions a day before the due date.  All students are given four (4) late days* for the semester to use on whatever project(s) and for whatever reason, no questions asked.  You can use them for illness, family emergencies, computer or equipment failure, loss or erasure of files, internet access problems, work for other courses, and other outside commitments.  Use them wisely!  You must use one late day per calendar day after the deadline in order to submit a project late. If you want to submit a project one day after the deadline, it will simply cost you one late day.  If you want to submit a project two days after the deadline, and you have already used one late day on that project for the day after the deadline, then it will simply cost you a second late day.  However, if you want to submit a project two days after the deadline, but you did not use a late day on that project for the day after the deadline, then it will still cost you two (not one) late days.

*You must email me if unexpected circumstances prevent you from completing the assignment on time (beyond using your late days).   At my discretion, and on a case-by-case basis, I can grant additional late days.

SLUGS will grade your submissions on:

  • Functional correctness,
  • Execution speed to obtain a correct solution, and
  • Computer memory needed to reach a correct solution

For each project, I will conduct a final grading run after the deadline, where every student’s project is run one-by-one on the autograder, possibly with additional hidden test cases.  The purpose of running every student’s project one-by-one is to even out the playing field by giving everybody the same computing resources when determining project grades, so your score should not be penalized because your runtime or memory usage was affected by other students’ projects being run in parallel.  The purpose of the hidden test cases (they will be randomly generated cases, not the trickiest corner cases) is to ensure that your project works in general, and not just for the autograder.  When conducting final grading, I will use your best submission, unless you email me requesting that I use your last submission within 48 hours after the project deadline.  “Best submission” is defined as the submission with the highest displayed score prior to the deadline.  If multiple submissions are tied as being your best submission, then I will use the most recent of those submissions for final grading.  

The score resulting from final grading is the score that will go in the gradebook.  This means that your overall highest displayed score on SLUGS may not necessarily be the score that goes in the gradebook.  It is possible that your score may go up, stay the same, or go down as a result of the final grading.  In particular, I will also look at your submitted code to judge the:

  • principles and practices (readable code, efficient algorithms and implementation, comments, use of topics from class), and
  • documentation of your solution.

A well-designed and commented, but slower solution may have its grade increased while a sloppy yet fast implementation may lose points.

In my personal experience, it is important for your own success in this course to begin working on a project the day the specification is released.  “Working on a project” includes (but is not limited to):

  • Reading the project specification
  • Writing test cases
  • Beginning to plan your program’s design
  • Asking questions in Student Hours
  • Working through video guides

Exams

There will be two (2) hour-long exams to check your mastery of concepts in this class.  Content for the exams may come from lectures, labs, projects, and readings.  While exams will focus primarily on material from each distinct half of the semester, these exams are officially cumulative.

You will be allowed to bring a single, 8.5x11 (letter) sheet of paper with reference notes to each exam.  This sheet may be typed or handwritten.  Note that writing this sheet out by hand can be more beneficial than typing it out.

Make-up exams will not be given for absences unless approved by the instructor in extreme circumstances.

Reading Quizzes

Readings will be assigned on a class-by-class basis. There will be a short quiz associated with each reading assigned for class. The purpose of these quizzes is to help students retain information for quick recall while completing homework assignments and to help maintain a steady pace of material during class meetings.

Quizzes will be available online via Gradescope and must be completed prior to the start of each class meeting (except for exams or as otherwise announced). There is no limit on the number of times a student may take a reading quiz before the deadline. Excluding special circumstances, reading quizzes may not be taken after the deadline has passed.

General Coding Assessment

As part of an assessment project being undertaken by the Computer Science faculty, you will complete a coding assessment using HackerRank during the final week of class. HackerRank is an online coding tool used by programmers to practice coding skills and by industry to screen and assess job candidates. The CS faculty will use this assessment to observe cross-semester progress in CS-219, CS-256, and CS-362. Students finishing CS-256 are not expected to receive perfect scores, but should have sufficient knowledge to attempt most questions. As such, the assessment will count as a lab assignment, and completion and effort will be weighted more heavily than correctness.

Attendance

Students are expected to attend each class meeting. Absences will leave holes in your understanding of course concepts. If you must miss a class, you are expected to make up the material on your own time before the next class. You are welcome to attend student hours if you have specific questions about the material you missed, but you will not receive any help if you ask, "what did I miss?" during student hours.

I do my best to post resources from class online (slides, recordings, etc.), but I write a significant amount on the board. This means you will need to review notes from a peer or rewatch the video recordings.

Should you become unable to attend class (e.g., you become sick, you have a doctor’s appointment, or your housing situation changes), please email me as soon as possible.

Grading

Your final grade will be a weighted average of Exams (30%), Labs (30%), Programming Projects (35%), and Reading Quizzes (5%).

The following table shows how averages translate to the 4-point grading scale.  Note that I do not guarantee any particular rounding scheme for this calculation.

4.00

96-100

3.75

93-95

3.50

90-92

3.25

87-89

3.00

83-86

2.75

80-82

2.50

76-79

2.25

73-75

2.00

70-72

1.75

67-69

1.50

64-66

1.25

62-63

1.00

60-61

0.00

0-59

Regrading Policy

Requests for an assignment regrade must be made to the instructor within one week of the assignment being returned to the student and by the final day of classes. Any requests submitted after this may be done at my discretion. I reserve the right to regrade the entire assignment, which may result in either an increase or a decrease in your grade. This is not intended to scare off students, but to avoid frivolous requests.

Examples of appropriate reasons for requesting a regrade include:

  • You believe your answer to a question matches the answer on the key.
  • Your answer is different from the key, but is also correct.
  • There is an error in the summation of points.

Examples of inappropriate reasons for requesting a regrade include:

  • Your programming assignment works on your computer but not the grading server.
  • Most of what you wrote on an exam was correct, but you want more partial credit.
  • You are one point away from a 3.75 and are trying to get extra points.

Electronics Policy

Students will need a laptop computer with an internet connection to participate in this course. If you do not have access to a reliable computer, please contact me as soon as possible. There may be resources available to help.

Students are expected to remain on task during synchronous activities (no excessive web browsing, social media usage, etc.), as per the professionalism policy.  If you have any concerns about this request, please contact me outside of class, and we will work together to find an appropriate solution.

Generally speaking, I encourage taking notes by hand. At least one study found that students who took notes longhand remembered more and had a deeper understanding of the material.  Rather than using slides, I typically take notes on the board, which will help you keep up if you are taking notes by hand.

Academic Integrity and Professionalism Policy

As noted in the Academic Honor Code in the Student Handbook, “all students at St. Lawrence University are bound by honor to maintain the highest level of academic integrity.”  Please review the handbook for general guidelines.  In particular, you should only be turning in your own work.  Additionally, you are expected to abide by the additional policies listed below.  It is my responsibility to report violations of these policies to the Dean.

Students are also expected to act in a professional manner for the duration of the course. This includes (but is not limited to): staying on task during labs, being respectful of others, and promptness for labs and deadlines. Unprofessional behavior will result in a reduction of the student's final grade.

Assignment Policies

In addition to the general policies described in the Student Handbook, you are expected to follow the following policies, which are specific to this course.

Late Work

Unless otherwise noted (e.g., project submissions) or discussed, you must turn in your work within one week of the due date to receive credit.  If you find yourself in a situation where this might not be possible, please contact me as soon as possible.

Copying

You may copy from the notes and examples provided in class, but you may not copy any other code from any other source.  SLUGS runs several checks of your submitted code and has the ability to detect copied code.

IDE Resources

You may use the type-checkers, linters, and standard coding hing engines in the Integrated Development Environment (IDE) required by this class. You may not use or have installed in your IDE any language model assistants, including (but not limited to) JetBrains AI, Github Copilot, ChatGPT, etc. Use—or presence—of these tools will be considered a violation of the academic honor code.

Collaboration

Unless otherwise indicated, you may discuss the assignments with your classmates, but you must complete the assignments yourself, and you may not share code. You may only submit work that you have personally written and understood. Always make a note in your code of your peers with whom you discussed an assignment. 

Partners

In situations where partners are allowed, you are expected to develop joint code.  In a remote setting, this means sharing your screens and taking turns serving as the “driver” and “navigator”.

Citations

You must always cite any people or other allowed resources (excluding class notes, and assigned readings) that helped you complete your work.  Additionally, submitted code should be commented to indicate lines influenced by all resources (including class notes and assigned readings). Failure to appropriately cite resources will be considered a breach of the honor policy and will be dealt with as described in this document. If, at any point, you are unsure about the citation policy, ask. Your grade is not affected by the number of resources you cite; I will not be impressed by low or high citation counts. Use the resources you need to complete the assignments!  

In addition to following the practice of academic honesty, the purpose of these citations is to help you find resources when you look back at your work.  If you were confused by something before, it’s likely you might be confused by it again later.

Best Practices

When it comes to academic integrity and professionalism, it’s best to ask questions if you are unsure.  It has been my experience that most violations are acts of desperation or misunderstanding rather than ill will.  I would rather you ask for help or clarification than commit an act of academic dishonesty.

As a general rule of thumb, when you are talking to someone (other than the instructor) about work in this class, close all code that you are working on.  If you cannot look at your code (or others’ code!) while you are discussing content, it becomes significantly more difficult to violate these policies.

In most cases, I don’t believe that students maliciously break these policies; violations tend to be an act of desperation. If you are tempted to copy code from online, a classmate, or a peer, STOP and email me.  You will find that my late assignment penalty is significantly less harsh than my academic dishonesty penalty.

Course Platforms

Canvas

All course materials will be available through our Canvas course page.  This is the “home base” for this course.  If you are looking for something related to CS-256, this is the place to start!

Gradescope

You will submit assignments for this course using Gradescope, which will be linked directly from Canvas.  When submitting a written assignment, you will need to convert your submission into either a PDF or a set of picture files.  If you are unable to do this, please contact me and we will find an alternative submission method.

Panopto

Recordings of classes will be available on Panopto.  I will also post supplemental video guides for class projects to Panopto.  You can access these videos by using the direct links provided in Canvas.

SLUGS

This semester we will be using an autograder to automate many aspects of project grading.  A link to the server will be provided on Canvas.  Please refer to the project specifications and the Programming Projects section of this syllabus for more information.

Tips for Success

Computer Science courses can often look and feel different from your other classes at St. Lawrence.  Nevertheless, mature study habits can help you be successful and achieve your personal goals this semester.  Many of these tips apply to courses across the curriculum, but a few are also specific to this particular class.

  1. Start homework and projects early, not the day before it is due. Humans are notoriously bad at estimating time; it’s better to have too much time rather than too little.
  2. Struggle through the frustration and don’t give in to temptation to take shortcuts or use disallowed resources
    1. This is part of the learning process (and why you should start early)
    2. Take a break. Sometimes stepping away from a problem can give you new insights
    3. If you’ve tried to solve a problem three times and it’s still not making sense, then it is a good time to ask for help
  3. Challenge yourself to ask questions and offer answers in class
    1. Nothing bad happens if you make a mistake
    2. If you have a question, you can be sure that at least two other people in class have the same question—ask it and help all three of you
  4. Set aside time outside of class and keep a regular schedule of when you are going to study for this class
    1. Do not use this time for other work or commitments unless you have already finished everything (including studying) for this class
    2. As a rule of thumb, set aside two (2) hours of time for every one (1) hour of class
    3. If you have academic accommodations, adjust the time you set aside to match
    4. Find a place you can concentrate.  There may be too many distractions in your room, so consider the library, PQRC, classroom, or majors’ room
  5. After each class, review the code and notes you took
    1. Fix any typos or mistakes that you find
    2. Add additional comments to your code to explain ideas
    3. Make extra notes to clarify what you wrote down and complete any examples that were left for you to do
    4. Create a list of questions you have about the material
  6. Do the assigned reading
  7. Show up for student hours
    1. This is a great time to ask your questions!
    2. You don’t need questions to attend, however. You might use this time for some of your set-aside review
  8. Come to class; watching the recordings is not a substitute for attending
  9. Make sure that your development environment is in “a good state”
    1. No errors in your IDE settings
    2. Code from previous classes works without crashing
    3. OneDrive is running and signed in (you might have to re-enter your password at least once during the semester)

Mental Health and Wellbeing

St. Lawrence University is committed to advancing the mental health and wellbeing of its students.  If you or someone you know is feeling overwhelmed, depressed, and/or in need of support, services are available.

For help, contact the Diana B. Torrey '82 Health and Counseling Center at (315) 229-5392 Monday through Friday from 8:30 AM–4:30 PM.  After hours, call Campus Safety at (315) 229-5555 to speak with the after-hours crisis counselor.  The nation-wide 24/7 crisis counselor service can be reached by calling (315) 229-1914.

For more details, visit  https://www.stlawu.edu/health-and-counseling-services

Accommodations

Student Accessibility Services

Your experience in this class is important to me.  It is the policy and practice of St. Lawrence University to create inclusive and accessible learning environments consistent with federal and state law.  If you have already established accommodations with the Student Accessibility Services Office, please meet with them to activate your accommodations so we can discuss how they will be implemented in this course.

If you have not yet established services through the Student Accessibility Services Office but have a temporary health condition or permanent disability that requires accommodations (conditions include but not limited to; mental health, attention-related, learning, vision, hearing, physical or health impacts), please contact the Student Accessibility Services Office directly to set up a meeting to discuss establishing with their office.  The Student Accessibility Services Office will work with you on the interactive process that establishes reasonable accommodations.

Color Vision Deficiency

If you are color vision deficient, the Student Accessibility Services office has on loan glasses for students who are color vision deficient.  Please contact the office to make an appointment.

For more specific information about setting up an appointment with Student Accessibility Services please see the options listed below:

Telephone: 315.229.5537

Email: studentaccessibility@stlawu.edu 

Website: https://www.stlawu.edu/offices/student-accessibility-services

Diversity and Equity Statement

As indicated by the University’s Statement on Diversity and the student handbook, we are committed to treating students fairly and with dignity regardless of age, color, creed, disability, marital status, national origin or ancestry, race, religion, sex (including gender identity and gender expression), sexual orientation, and/or veteran status. 

It is my intent that students from all diverse backgrounds and perspectives be well served by this course, that students’ learning needs be addressed both in and out of class, and that the diversity that students bring to this class be viewed as a resource, strength and benefit.  Should you have any concerns, problems, or suggestions, please do not hesitate to contact me. I strive to make my classrooms safe spaces for learning.

Please also feel free to talk to me about events that happen outside my classroom.  If you do not feel comfortable talking to me, there are many other resources available to you on campus, including those on this list of on-campus resources: https://www.stlawu.edu/diversity-and-inclusion/campus-resources

You can report a bias incident here: https://www.stlawu.edu/diversity-and-inclusion/bias-reporting

Title IX

MEMBERS OF THE ST. LAWRENCE COMMUNITY—students, employees, and guests— should expect to be free from retaliation, discrimination, harassment, and sexual misconduct, behavior that is inherently abusive of the humanity that each of us brings to the campus community. St. Lawrence University and its faculty are committed to supporting our students and seeking an environment that is free of discrimination, harassment, and sexual misconduct.  St. Lawrence strongly encourages students to report retaliation, discrimination, harassment, including sexual harassment, sexual exploitation, domestic violence, dating violence, stalking, or sexual assault to St. Lawrence University’s Title IX office. Discrimination on the basis of sex includes discrimination on the basis of assigned sex at birth, sex characteristics, pregnancy and pregnancy related conditions, sexual orientation, and gender identity. 

If you speak with a faculty member about an incident that involves a Title IX matter or matter of other discrimination or harassment, that faculty member must notify SLU’s Title IX Coordinator that you shared that experience. This is true even if you ask the faculty member not to disclose the incident. Moreover, if you disclose an incident of retaliation, discrimination, harassment, or sexual misconduct in an academic assignment, the faculty member must also report that experience to the Title IX Coordinator.

Once a report is made, the reporting individual can expect to receive email outreach from the Title IX Coordinator, who will provide resources and possible resolution options. If the impacted person is not a threat to themselves or others, the impacted person will be free not to respond to the offer to meet. You can find more information for resources and reporting options at: https://www.stlawu.edu/offices/title-ix/reporting-options-confidential-and-nonconfidential-resources.

Title IX also protects students who are pregnant or need assistance for pregnancy related conditions. If you are pregnant, the Title IX Coordinator can assist you in understanding your rights and options as well as provide supportive measures. 

Lindsey Tropper (Cohen) is the Title IX Coordinator at St. Lawrence University (Student Center Room 302; lcohen@stlawu.edu; 315-229-5334).

PQRC

The Peterson Quantitative Resource Center (PQRC) offers free, no appointment necessary peer tutoring across a range of courses with quantitative content.  The PQRC student staff of mentors is trained to assist students to develop and to improve their quantitative skills and understanding.  More information about the PQRC’s current hours and modes of operation can be found at the PQRC webpage: www.stlawu.edu/pqrc

Research

Your class work might be used for research purposes. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers or teachers. Any student who wishes to opt out can contact the instructor to do so up to seven days after final grades have been issued. This has no impact on your grade in any manner.

Right to Revise

This is a "living syllabus". Therefore, its contents may be changed throughout the course of the semester to address changing needs. I will do my best to notify students of changes; however, it is up to the student to monitor this page for any changes. Final authority on any decision in this course rests with the instructor (i.e., me), not with this document.

Many ideas for this class were borrowed from similar classes taught at St. Lawrence and The University of Michigan.

Course Summary:

Date Details Due