CSCI 132: Basic Data Structures and Algorithms
Course schedule
Schedule subject to change.
Date | Lecture Topic | Lab Due | Project Due | Quiz |
---|---|---|---|---|
Wednesday 8/24 | Syllabus & set up | |||
Thursday 8/25 | Lab 0 (note that there is no in-person lab today) | |||
Friday 8/26 | Java vs. Python | |||
Monday 8/29 | User input, For loops, arrays, lab 1 intro | |||
Wednesday 8/31 | Objects; more with data types | |||
Thursday 9/1 | Lab 1 | |||
Friday 9/2 | this ; modifiers | |||
Labor Day - no class | ||||
Wednesday 9/7 | Controlling the flow; intro Project 1 and Lab 2 | |||
Thursday 9/8 | Lab 2 | |||
Friday 9/9 | Example program: CreditCard class; UML | |||
Monday 9/12 | Object Oriented Design: Inheritance | |||
Wednesday 9/14 | Object Oriented Design: Interfaces and Abstract Classes | |||
Thursday 9/15 | Lab 3 | |||
Friday 9/16 | Polymorphism; command line args | Project 1 | ||
Monday 9/19 | More OOP | |||
Wednesday 9/21 | Wrapper classes; exceptions | |||
Thursday 9/22 | Lab 4 | |||
Friday 9/23 | TA Q+A | |||
Monday 9/26 | Generics; finishing up classes | |||
Wednesday 9/28 | Review for Quiz 1 | |||
Thursday 9/29 | Lab 5 | |||
Friday 9/30 | Take quiz in class (optional) | Project 2 | Quiz 1 | |
Monday 10/3 | Quiz; Lab 6 | |||
Wednesday 10/5 | Applications of array data structures | |||
Thursday 10/6 | Lab 6 | |||
Friday 10/7 | Insertion Sort, Debugging | |||
Monday 10/10 | Linked lists | |||
Wednesday 10/12 | More on linked lists | |||
Thursday 10/13 | Lab 7 | |||
Friday 10/14 | Circular, doubly linked lists | Survey 1 | ||
Monday 10/17 | Equivalence and cloning | |||
Wednesday 10/19 | Growth rates | |||
Thursday 10/20 | Lab 8 | |||
Friday 10/21 | Big O notation | Project 3 | ||
Monday 10/24 | Algorithm correctness | |||
Wednesday 10/26 | Project 3 runtimes | |||
Thursday 10/27 | ||||
Friday 10/28 | Quiz review | Lab 9 | ||
Monday 10/31 | Take quiz in class (optional) | Quiz 2 | ||
Wednesday 11/2 | Going over quiz; intro stacks + queues; intro Project 4 | |||
Thursday 11/3 | Lab 10 - nothing to turn in, get started on Project 4 | |||
Friday 11/4 | More stacks + queues; more Project 4 | |||
Monday 11/7 | List ADT; ArrayList; amortized analysis; lab 11 | |||
Wednesday 11/9 | Iterators; useful List methods | |||
Thursday 11/10 | Lab 11 | |||
Veteran’s day - no class | ||||
Monday 11/14 | Recursion + binary search | |||
Wednesday 11/16 | Analyzing recursive functions | |||
Thursday 11/17 | Lab 12 | |||
Friday 11/18 | No class — optional help session in lecture classroom | Project 4 | ||
Fall break | ||||
Monday 11/28 | File I/O; trees; heaps | |||
Wednesday 11/30 | Heap sort; merge sort | |||
Thursday 12/8 | Lab 13 | |||
Friday 12/9 | Priority queues; Dijkstra’s algorithm | |||
Monday 12/5 | Quicksort | |||
Wednesday 12/7 | Java and OOP review | |||
Thursday 12/8 | Lab 14 | |||
Friday 12/9 | Data structures and algorithms review | Project 5 | Survey 2 | |
Final - Monday 12/12, 2:00pm-3:50pm | Take quiz in lecture room or ask questions to prep for quiz (optional) | Quiz 3 |
Catalog description
4 Credits (3 Lec, 1 Lab). PREREQUISITE: CSCI 127 and M 151Q. An examination of advanced Java and basic data structures and their application in problem solving. Data structures include stacks, queues and lists. An introduction to algorithms employing the data structures to solve various problems including searching and sorting, and recursion. Understanding and using Java class libraries. The laboratory uses Java. Introduces Big-O Notation.
Course Info
This course meets for lectures on Mondays, Wednesdays, and Fridays from 3:10pm-4pm in Reid Hall 103. Please bring a laptop to class so that you can participate in the classwork exercises. Lectures will be recorded and available on the day’s lecture page (see schedule above) if you would like to rewatch them. On Thursdays, there is a two-hour lab period in which you can complete the week’s lab assignment and get help from the course assistants. We will use Discord as the primary method of course communication, and all course information will be posted on this website or on the Discord server; D2L will be used only to turn in assignments and for grading.
Course Resources
Java documentation, tutorials, and useful links
- You can find the official Java documentation here.
- An organization that I like, Runestone Interactive, makes an interactive textbook for programmers who are coming from Python to and beginning to learn Java. Check it out here.
- If you are interested, check out the MIT Missing Semester of Your CS Education. It covers many of the tools you will use if you continue your computer science career, such as the command line,
git
, and much more. - MSU has a code of student conduct that outlines the responsibilities of instructors and students.
Optional textbook
The textbook is optional for this course. Data Structures and Algorithms in Java; 6th edition, Goodrich, Tamassia, Goldwasser. It is available in the bookstore. You can also rent the eBook from Amazon for the semester.
Labs & course assistants
There are four lab sections, all of which meet on Thursdays in Roberts Hall 111. There will be a TA to help you. This TA will also grade your work, so please go to your assigned section. You should contact your TA via Discord if you have any questions about grading or need extra help.
- 001: 10am-11:50am, Asad Noor
- 002: 12pm-2pm, Nicholas Call
- 003: 2:10pm-4pm, Asad Noor
- 004: 4:10pm-6pm, Emmett Osborne
We also have 495 consultants to answer questions during lab. They are Jack Tetrault and Josiah Schwahn (001), Mason Medina and Madison Munro (002), Fletcher Phillips and Ara Megerdichian (003), and Steven Vought (004).
Lecture videos
Lecture videos are hosted both on Panopto (MSU’s screen capture and video hosting service) and on YouTube. Here is the public link to Panopto. Lecture videos on YouTube are linked on each lecture page. Here is the YouTube playlist.
Instructor office hours
My office hours are Monday and Wednesday 9:30-10:30am and Thursday 10-11am in Barnard 359 or via Discord. You can also contact me on Discord to set up a different meeting time. You can find office hours for all CS faculty here.
SmartyCats
There is SmartyCats tutoring for this course! Visit their website to find out more. You can also apply to be a SmartyCats tutor yourself for other CS courses you’ve taken, or for this one next semester.
Computer Science Success Center
There are free tutors available in Barnard 259. More information here.
Discord server
All course communication will be through our course Discord server. Join with this link. It will prompt you to create a new account, or you can choose to log in with an existing account.
Course outcomes
By the end of this course, students should be able to:
- Design and implement a class in Java
- Explain the concept of an ADT
- Implement linked lists, stacks, queues, and deques
- Apply consistent documentation and program style standards in Java
- Be able to determine the time complexity of simple algorithms
Grading
You will be graded on the following:
- 13 labs (lowest score dropped out of 14): 30%
- 4 projects: 50%
- 3 quizzes (including final): 18%
- 2 course surveys: 2%
After any curving, your grade will be determined by your total score as follows: 93+: A; 90+: A-; 87+: B+; 83+: B; 80+: B-; 77+: C+; 73+: C; 70+: C-; 67+: D+; 63: D; 60: D-.
Late assignment policies
To run a course of this size we cannot accommodate individual requests for extensions on assignemnts; therefore, we have strict rules for when assignments are due, but have some leeway built in. Please read the bullet points below carefully, respect the policy, and get help early if you are having any problems. We want you to succeed!
- You are responsible for any announcements about assignments made in class, on Discord, on D2L, and here on the course website.
- All assignments are due on their due date by the Anywhere on Earth (AoE) timezone, which is 6 hours behind Bozeman. (This means that the real due date is 6am the following day.) If you submit a lab or project the following day before 8am, you get 25% off. If you submit within four days of the due date (by Monday AoE for labs; by Tuesday AoE for projects) you get 50%. Otherwise, no points are possible.
- Every student gets one free late pass with no questions asked for projects. This means you can submit up to four days late (by Tuesday AoE) with no penalty. Use this wisely! If you use this early in the semester and something unforseen happens, you will still need to submit the project on time or the penalties above apply. Please message the course assistant for your section on Discord to let them know you are using your late pass for a project. You should send this message before you make the submission, or shortly after.
- At the end of the semester, your lowest lab grade will be dropped.
- You can submit as many times as you would like; only your last submission will be graded.
Missed quiz policy
Any conflicts with a quiz must be discussed with me prior to missing the quiz. I follow University policy on makeups, which allows that serious illness or a serious family emergency are valid reasons requiring an accommodation. Most other reasons (employment conflict, travel plans) are not valid.
Collaboration policy
On all assignments, you may:
- Share ideas with others.
- Help others debug their code (or receive help debugging your code from someone else).
You may not:
- Share your code with other people.
- Submit code that you did not write.
- Modify someone else’s solution and claim it as your own.
Academic misconduct
In line with the MSU student code of conduct, if I or the teaching assistants suspect that you have committed academic misconduct, we will schedule a meeting with you to discuss. If, after the meeting, we believe that you did commit academic misconduct, you will receive a 0 on the assignment and I will submit a report to the Dean of Students. It’s just not worth it to cheat in this course.
Important dates
The last day to drop the course online (with no instructor or advisor approval) is Sepember 7th. The last day to drop without a W grade (instructor or advisor approval required) is September 14th. The last day to drop with a W grade (instructor or advisor approval required) is November 17th. See the full add/drop schedule for more information.
Diversity statement
Montana State University’s campuses are committed to providing an environment that emphasizes the dignity and worth of every member of its community and that is free from harassment and discrimination based upon race, color, religion, national origin, creed, service in the uniformed services (as defined in state and federal law), veteran’s status, sex, age, political ideas, marital or family status, pregnancy, physical or mental disability, genetic information, gender identity, gender expression, or sexual orientation. Such an environment is necessary to a healthy learning, working, and living atmosphere because discrimination and harassment undermine human dignity and the positive connection among all people at our University. Acts of discrimination, harassment, sexual misconduct, dating violence, domestic violence, stalking, and retaliation will be addressed consistent with this policy.
Accommodations
If you have a documented disability for which you are or may be requesting an accommodation(s), please contact me and the Office of Disability Services as soon as possible.
How to succeed in this class
What you can do:
- Keep up with the course by attending class, checking Discord, being aware of the course schedule, and doing all assignments on time.
- Be an active participant in class. This means asking and answering questions in class and on Discord, seeking help when needed, and contacting the instructor or the course assistants using Discord if you have any questions outside of class time.
- Be respectful of your classmates, your instructor, and the course assistants.
- Do your own work.
What I can do:
- Grade promptly (exact guarantees TBD).
- Post assignments well in advance (at least one week before due date for labs; at least two weeks before due date for projects).
- Respond to all Discord messages within one business day.
- Create a course atmosphere conducive to learning by respecting all of my students and being enthusiastic about course material and my role in helping you learn.
Acknowledgments
Thanks to Daniel DeFrance for sharing his syllabus with me.
Copyright statement
This syllabus, course lectures and presentations, and any course materials provided throughout this term are protected by U.S. copyright laws. Students enrolled in the course may use them for their own research and educational purposes. However, reproducing, selling or otherwise distributing these materials without written permission of the copyright owner is expressly prohibited, including providing materials to commercial platforms such as Chegg or CourseHero. Doing so may constitute a violation of U.S. copyright law as well as MSU’s Code of Student Conduct.