fullscreen
timer
qrcode
plickers
selector
edit
reset

Introduction

COS 265 - Data Structures & Algorithms

Who are we?

Professor


Lab TAs

Who are we?

Students

Disclaimer





This course is based on the COS 226 Princeton course, for which the course book was written.

help!

At the end of the term, you will fill out an evaluation.

Please be critical, letting me know what worked and what did not.

Read the assigned book readings, so I can know if they were helpful.

resources

You will need to refer to these resources frequently

Required Book


Electronic Resources

Overview

This course continues on where COS 121 left off.

You have learned the fundamentals of coding.

Now we will go deeper...

This is your last chance. After this, there is no turning back. You take the blue pill—the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill—you stay in Wonderland and I show you how deep the rabbit-hole goes.
–Morpheus

The Matrix ]



Since you're in this course, you're taking the red pill.

Let's learn some (programming) kung-fu!

The Matrix ]

Overview

You will learn:

Definitions


Data Structure
method to store and retrieve information

Algorithm
method for solving a problem



Note that, in general, a piece of code is not an algorithm, and a chunk of memory is not a data structure.

Key idea of course



Data Structures and Algorithms are related parts, facets of computation, that are foundational to computer science.


A computer scientist has a strong understanding of both of these.

Key idea of course

During your career, you will see a problem solved with many different algorithm and data structure implementations.


Most will be bad; some will be OK; only a few will be good.


My goal is to equip you with the skills necessary to see and understand the differences.



I will, in fact, claim that the difference between a bad programmer and a good one is whether [they] considers [their] code or [their] data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
–Linus Torvalds (creator of Linux)



For me, great algorithms are the poetry of computation. Just like verse, they can be terse, allusive, dense, and even mysterious. But once unlocked, they cast a brilliant new light on some aspect of computing.
–Francis Sullivan

expectations

This course has several required deliverables


Be mindful of the due dates and times.

You are responsible for turning in your own work on time.

expectations

This is the third course in the Computer Science degree.

Most of you are sophomores.

Therefore, you should know...

expectations

Projects and Lab Exercises have implementation and documentation requirements.


You will receive full credit for your implementation solution only if it meets all requirements completely.

Important

In addition to correctness requirements, projects will have performance and conformance requirements.

Code that produces correct results but does not run within constraints (time, memory, API) will not receive full credit.

Important

Code that does not build and run will likely receive a 0.

expectations

Projects and Lab Exercises have implementation and documentation requirements.


In addition to coding, you will be required to document and analyze your work.

Each assignment will include a readme.md Markdown file that you will need to edit.

Info

Think of the readme.md file as a lab notebook that you would fill out in other science courses.

expectations

The project write up will describe what parts you are allowed to modify, which is typically the body of several functions.

In general, you are not allowed to modify the function's signature (return value, function name, argument types or ordering, which Exceptions are thrown, etc.)

Submissions that change the API will not receive full credit.


Expect to work on project outside of Lab. Expect for each credit hour to work 2–3hrs per week outside of lectures and labs. COS265 is 4hrs, so that is 8–12hrs/wk.

expectations






Important

In general, late submissions will not be accepted and extensions will not be granted.

expectations

Do not use AI or AI tools in this course.

Submit only code that you wrote and fully understand.

If any line of code looks even a little suspicious, I will ask to meet with you to explain your code.


Your task is to convince me that you have mastered the material.

Among Us ]

grading

I use a 3pt grading system for COS 265 (and other courses)

Each gradeable item is scored 0–3 (or a scaled version). Assignments will have many gradeable items.

0 nothing of value was submitted F
1 submitted, but clearly not correct D-
2 not a 0, 1, or 3 C
3 perfect solution, meets every
requirement and expectation
A

Submitting nothing is clearly a 0. But also code that doesn't compile or doesn't run will likely result in a 0.

Code that runs but produces incorrect or unexpected output will likely get a 1.

See my grading philosophy for break-down

grading

The implementation portion of projects will be graded by running your code against unit tests. A unit test is a pass/fail (binary) test.

Each gradeable item will have a set of unit tests, and the grade you receive is based on which of the tests passed.

Important

These tests will run at the end of the day (just after midnight) based on what code was committed AND pushed to the CSE GitLab and which issues are labeled ready for testing.

The tester will post the results as comments to the issues and update the labels to indicate score.

It is in your interest to start work early, to submit frequently, and to test as often as you can!

labs

Labs will primary allow time to...

code review

During some labs we will also perform code reviews

examinations

We will have two exams. Both will be in person and without resources (books, notes, internet, etc.).


The first exam is an Oral Exam taken around the middle of the semester.

It is structured to simulate a technical interview. Some of the questions might involve stepping through a snippet of code, explaining how a data structure works, providing details on an algorithm, etc.

This exam should take no more than 30 minutes.

examinations

We will have two exams. Both will be in person and without resources (books, notes, internet, etc.).


The second exam is a Final Exam taken during finals week.

It is structured similar to a standardized test like the GRE or ETS. There will be a variety of problem types, such as multiple choice, true or false, and short answer.

This exam should take no more than 2 hours.

examinations

We will have two exams. Both will be in person and without resources (books, notes, internet, etc.).


The lowest grade between these exams will be dropped.

You may use this to your benefit.

attendance and participation

Attendance and participation will be recorded through interactive sessions and using Slack and Plickers cards.


The interactive sessions will provide you hands-on experience with the material.

We plan to hold sessions about one every other week.

You each will get a deck of cards. Bring these cards with you to all lectures and labs.

attendance and participation

Attendance and participation will be recorded through interactive sessions and using Slack and Plickers cards.


Slack is an online collaboration environment that we will use for updates, questions, and answers.

You get participation points for asking and answering questions.


Important

If you are posting source code, you must mark your question as Direct Message (DM)!

attendance and participation

Attendance and participation will be recorded through interactive sessions and using Slack and Plickers cards.


Plickers is a quiz / survey tool that uses cards (paper clickers)

I have a Plicker card for you. Bring this to every lecture and lab. If you lose it, let me know, and I will print another for you.

Written on the back of your card are your name, this course, and four letters (A,B,C,D).

During each participation assessment, orient your card so that

Bring your Plicker card with you to all lectures and labs.

quiz: current here-ness state

This is your first pop quiz... err... participation assessment!


Indicate using your Plicker card which best fits your current state.


  1. You are here mentally and physically.
  2. You are here mentally, but not physically.
  3. You are here physically, but not mentally.
  4. Other

computer use

Mounting research indicates that electronics usage in classroom harms student's ability to retain and process information.

For example, although students that take notes using laptops tended to record more information, follow-up tests show that they processed and retained much less than those that take notes on paper.

Therefore, I have adopted a no-computer-use policy.

During lecture time, you are not allowed to use a computer, even for taking notes.

Exception may be granted to those that write a 1-page argument.

See syllabus and course LMS page for details.

accessibility

I am working on improving accessibility of materials.

Please let me know how I can improve it for you.

critical thinking

Learning and applying 5 critical thinking skills

metacognition explained
metacognition explained


Critical thinking is foundational to

slides

The slides are provided in interactive format using HTML

They have been tested to run and look OK in Google Chrome and mostly OK in Firefox

There may be bugs. Let me know, and I will fix them.

projects

Generally, I post the projects while we are still covering the needed materials.

I do this so that you can

Projects are due Tuesday at 11:59pm

projects


Important

At 12–20hrs/project, waiting until the last "minute" means either:

  1. you project is submitted unfinished
  2. you will be working for ~15hrs solid

Important

Some parts of each project might involve recording and calculating that can take a considerable amount of time.


Important

I guarantee that you will underestimate how much time it takes to finish these projects!

first project

The first project, P00_JavaIntro, is designed to introduce you to:

×