Course Syllabus


Note: Some links on this page may only be accessible to registered students.


Welcome to CS 261: Data Structures (online)

The purpose of this course is to develop your knowledge and understanding of data structures. The course was intentionally designed so that, at the end of the term, you will be able to do the following:

  • Describe the properties, interfaces, and behaviors of basic abstract data types, such as collection, bag, indexed collection, sorted collection, stack, and queue.
  • Read an algorithm or program code segment that contains iterative constructs and analyze the asymptotic time complexity of the algorithm or code segment.
  • State the asymptotic time complexity of the fundamental operations associated with a variety of data structures, such as vector, linked list, tree, and heap.
  • Recall the space utilization of common data structures in terms of the long-term storage needed to maintain the structure, as well as the short-term memory requirements of fundamental operations, such as sorting.
  • Design and implement general-purpose, reusable data structures that implement one or more abstractions.
  • Compare and contrast the operation of common data structures (such as linear structures, priority queues, tree structures, hash tables, maps, and graphs) in terms of time complexity, space utilization, and the abstract data types they implement.

We call this list the course Learning Objectives. We recommend that you periodically revisit this list throughout the term to check your progress on developing this knowledge and these skills.


Course Structure

We structured the course around the Learning Objectives, above. We will present and material and assess your learning in multiple ways, including the following:

  • Weekly readings
  • Video lectures
  • Weekly worksheets (completed with a small group)
  • Piazza discussion forum
  • Programming assignments (completed individually)
  • Two exams (midterm and final)

Note: The midterm and final exams must be proctored.


Your Instructional Team

headshotLaurel -smaller_cropped.JPG

Instructor: Laurel Hopkins (

Hi everyone, my name is Laurel Hopkins and I am currently a Ph.D. student at OSU. I work in Rebecca Hutchinson's lab as part of the Artificial Intelligence group. Before coming to OSU for grad  school, I worked for several years as a hardware designer for a medical company in Santa Barbara. I enjoy teaching data structures because it was this class that first got me interested in programming, although I didn't formally pursue Computer Science until grad school. I also enjoy this class because the material is fundamental for Computer Scientists. Outside of school, I like hiking, yoga, and  recently started rock climbing. I am looking forward to working with you and supporting your learning of data structures this term!




Justin Boyer (

Hello, my name is Justin Boyer. I just started my second year in the program and look I forward to helping you learn about data structures!

Before starting at OSU, I got a degree in Microbiology from Brigham Young University.  After I started learning Python to write scripts helping me parse through genetic data, I realized I enjoyed programming a lot more than I enjoyed biology.  Ultimately, I joined this program to build a more well-rounded computer science education.

Currently, I live in the Seattle area and my hobbies include camping, Brazilian Portuguese, and Destiny 2. I look forward to meeting you all!


Martin Edmunds (

Hello everyone! My name is Martin Edmunds and I will be on of your TA's for this course. I am currently enrolled in this program just like you all :)

A bit about me: I grew up in rural West Virginia and completed a BS in ACS Chemistry at Marshall University. During my last year there I took a programming course in Python and realized that I made a mistake!

I moved to Los Angeles, CA where I met my wife and started to attend OSU. I relocated to Orlando, FL this past year and, in my spare time, I like to dodge hurricanes and play video games.

I'm very excited to work with you all and hope you have a wonderful semester!

Please feel free to contact me anytime.


Hao Jia ( 

Hello, my name is Hao, and I will be one of the TAs for this course.  My major is computer science. I am a junior, and this is my second year at OSU.

Before I came to OSU, I studied marine engineering at Shanghai Maritime University. However, I think I prefer computer science, so I decided to transfer to OSU. I am obsessed with coding, and I like algorithms and data structures. I spend a lot of time on it. My preferred language is C / C ++ and Python.

During the holidays, I like to travel around the world with a camera, so that I can fully relax. At the same time, I also enjoy the interesting people and things I met on the road.

Sriram Narayanan ( 

Hello everyone, my name is Sriram Narayanan and I am thrilled to have this opportunity to work with everyone in this course.

I am about halfway through the post-bacc program right now. I am currently working as a structural engineer and software developer with a renewable energy company, designing offshore wind turbines. I graduated with a Master’s in structural engineering some years ago, before which I was a construction manager. Right now, I am on the cusp of a career change to full time software engineering.

My interests include artificial intelligence and machine learning; languages I work with are python, C and C++. I am currently wrapping my head around neural networks and systems design.

In my steadily dwindling spare time I work on industrial art projects including woodworking, MIG and TIG welding, glass blowing and blacksmithing. I’m an avid movie watcher, currently catching up on the criterion collection. I also like spending time outdoors, particularly hiking and trail running.


Tam Nguyen (

Hello everyone!

My name is Tam Nguyen and I will be one of the TAs for this course. I am currently a Phd Candidate in EECS  at OSU with focusing on machine learning and signal processing. 

I received my Masters degree in EECS in Korea before starting my PhD at OSU. I am familiar with Matlab and Python. I am looking forward to helping you learn about this course!


Kunal Patadia (

Hi everyone, my name is Kunal Patadia and I'm looking forward to being one of your TA's for this course. I'm currently a student at Oregon State University and am going to be starting my second year. I originally graduated from the University of California, Irvine and soon after developed an interest in coding after one of my friends introduced me to it. I started by working on small and simple programs in Python and from there decided I wanted to switch my path into this field. 

Asides from this, I'm from Southern California and enjoy photography, filming, and traveling. I'm very excited to help you all with whatever questions you may have so please feel free to reach out.


Cris Shumack (

Hello everyone. My name is Cris Shumack and I will be one of the TAs for this course. I am very excited for the opportunity to work with you all. I currently have 4 courses remaining in the program, including the 2 that I will be taking this quarter. Data structures are such an important topic in computer science in my opinion, and I really think you all will enjoy this course.

Outside of the program, I enjoy exploring Colorado, playing PC games, watching sports, and going to the gym. My office hours are posted on this page, but please feel free to reach out via email or Slack anytime and I will help in any way I can!


Note: Some links on this page may only be accessible to registered students.


Please read the course syllabus very carefully:

Next, take the syllabus quiz:

You may also want to look over the course schedule or download it for your records:


Note: Some links on this page may only be accessible to registered students.


Piazza Discussion Board

Piazza is the best place to get help with course-related questions.

Slack Workspace

Slack is where to look for real-time help from peers.


Course Resources

For a running list of corrections to the course material, please check out the Textbook Errata and the Worksheet Errata


Instructor Contact Information

  • Laurel Hopkins (
  • Communication Policy
    • Piazza is the best way to reach instructors for any course-related query. We can refer back to our previous discussions here and also as it will be visible to the entire class. So, the other students will be able to get benefit from it. Not all posts require a reply from me and often it is better for students to hash out an answer to a question. But please inform us if you do not receive a reply within 48 hours.
    • Sending an email to your main instructor is the preferred mode of communication for discussing matters of a personal nature related to the course.

TA Contact and Office Hours Information

The Teaching Assistants will hold fixed weekly office hours starting from Week 2. Office hours are held via Official Slack channel. The contact and office hours information of the Teaching Assistants are provided as below -


Please follow the tutoring information below if you need any course on-boarding support from the peer or Ecampus tutors:

1. CS peer tutoring: Tutoring_annoucement.pdf
2. Online tutoring:

Note: Some links on this page may only be accessible to registered students.


Now that you've read the syllabus, here's what to do next:

  1. Take the Syllabus Quiz (if you haven't already)
  2. Read over the important information in these modules:
  3. Look over the Week 1 Learning Module and due dates
  4. Begin working on the tasks in the Week 1 Overview

Course Summary:

Date Details Due