For course schedule, click here .
Course Logistics
Lecture
Tuesdays and Thursdays 10:50 AM - 12:05 PM
Location: Barnard Hall 103
All lecture recordings, code, and slides will be put on the course website, but I still highly encourage you to come to class. People that attend lecture do better in the class.
Lab
Lab time depends on the section that you registered for:
- Section 003- Fridays 10:00 - 11:50 AM
- Section 004- Fridays 12:00 - 2:00 PM
- Section 005- Fridays 2:10 - 4:00 PM
Location: Roberts Hall 111
Q: Is lab attendance mandatory?
A: Lab attendance is optional. I encourage you to go to lab, but attendance will never be taken. The programming assignments for labs are posted before Tuesdays, and can be completed from home.
Q: Do I have to attend the lab section that I registered for?
A: You do not need to attend the lab section that you registered for. You can attend an earlier/later lab section if you would like
Q: Do I have to bring my own laptop to lab?
A: I would recommend doing so, but Roberts 111 is a computer lab and has all the software and tools for you to complete the lab if you do not have a laptop.
Instructor
Reese Pearsall
Email: reese.pearsall@montana.edu
Office Hours: Tuesday, Wednesday, and Friday 12:00 PM - 1:00 PM
Office: Barnard Hall 361
Discord: @reese_p
If my door is ever open, you can stop by. You can also email me to arrange a time to meet outside of office hours.
I can also meet via Webex or Discord if needed. Email me to arrange a time
Instructor Illness
I am currently in the midst of battling a chronic health condition. Because of this, I am generally not around in-person during the early mornings (but you can still email/message me).
There may be days where I have to unexpectedly cancel class, or have you watch a recorded lecture instead. I generally feel ok, but it's always possible things could get worse. Please always check the course schedule for each morning for the most up-to-date information.
Teaching Assistants/Graders
- Section 003 (10AM - 12PM) - Shahnaj Mou
- Email: shahnajmou@gmail.com
- Office Hours: Monday 3:10PM - 4:00PM, 5:10PM - 6:00PM
- Section 004 (12PM - 2PM) - Oscar Oropeza
- Email: ooropeza2000@gmail.com
- Office Hours: Wednesday 12pm - 1pm
- Section 005 (2PM - 4PM) - Shahnaj Mou
- Email: shahnajmou@gmail.com
- Office Hours: Monday 3:10PM - 4:00PM, 5:10PM - 6:00PM
Lab Assistants
These are upper-division computer science students that are present during lab time to help with your assignments. They do not grade any of your assignments
- Section 003
- Gabriel Martens
- Email: gabrielmartens00@gmail.com
- Section 004
- Ashley Foss
- Email: afoss97@gmail.com
- Section 005
- Luna Richards
- Email: dylanjr821@gmail.com
Textbook
Other Required Materials
- Java IDE (choose one of the following)
All of these are free to download and use. I will be using and recommending Eclipse in this class, but you can use any of the IDEs above. IntelliJ is a great IDE, but you must register for a student license with your MSU email
Class Communication
- Discord server link
- I will be using Discord to make announcements, answer any questions, discuss course material, and help debug issues. Please do not overshare answers or solutions in the public channels
- You must be respectful towards other users
- I am literally always on Discord, so you always shoot me a DM whenever.
Other Resources
Catalog Description
- Credits: 4
- Prerequisite: CSCI 132- Basic Data Structures and Algorithms (Required)
- Description: Advanced data structures and programming techniques and their application. Topics include: trees, balanced trees, graphs, dictionaries, hash tables, heaps. Examines the efficiency and correctness of algorithms. The laboratory uses Java.
Note from Reese: Before taking this class, you should feel comfortable basic Java programming, be comfortable using the following data structures: arrays, linked lists, stacks, queues, be comfortable with basic recursion, and how to analyze an algorithm using big-O notation
Course Outcomes
By the end of this course, students should be be able to:
- Independently design, write, and test programs of moderate complexity.
- Be able to implement the following data structures: trees, hash tables, graphs
- Identify the tradeoffs of various data structures and make a defensible decision as to which one(s) to use for a given problem.
- Understand problem solving techniques including dynamic programming, divide and conquer, and greedy
- Be able to formally detail the performance of an algorithm (using big-O notation) and identify the factors limiting that performance.
Grading
35% - Labs (10 @ 3.5% each)
45% - Programs (4 @ ~11.25% each P3 is worth a bit more than the others)
20% - Quizzes (3 @ 6.67% each)
1% - LeetCode (Extra Credit)
Grading Breakdown
- Labs- These are weekly assignments where you will gain experience with topics taught in class. These coding assignments are typically shorter, and should only take 1-2 hours to complete. Starting code will usually be provided, and you will need to supply the missing methods and/or Java classes. Labs are due on Friday nights at 11:59 PM. Labs will be posted a few days ahead of time. You can complete lab assignments from home. There will be 11 labs, but only 10 will be graded (I will drop your lowest lab grade)
- Programs- Programs are more lengthy programming assignments. There will be 5 programs assigned throughout the semester, and are due on their specified due date at 11:59 PM. You will be given 2-3 weeks to complete them. Programs are much more difficult than labs, and you wil develop your solution from scratch. These assignments are much more higher stakes, so it is important you get started on them early and get help if needed. You can get help from your TA during lab or during their office hours, and you can get help from Reese during his office hours.
- Quizzes- There will be three quizzes throughout the semester. These quizzes will be taken in replacement of the lab during the week. You MUST take these quizzes in Roberts Hall 111 (You can bring your laptop) during your lab time that you are registered for. If you cannot attend the lab section you registered for, you must talk to Reese beforehand. The TA's will be keeping track of the names that come into Roberts 111. If you decide to take the quiz from Home, you will face a very harsh penalty. You can use any notes, lecture recordings, past assignments on the quizzes. These quizzes are only ~20 questions, and consist of multiple choice, true/false, and matching. These quizzes can generally be completed in 20-60 minutes, but the quiz will be timed for 2 hours.
- Quizzes- We will solve Leetcode problems throughout the semester. You can earn 1% added to your final grade if you make a LeetCode account and solve X problems (details tbd)
Grading Scale
- 93+: A
- 90+: A-
- 87+: B+
- 83+: B
- 80+: B-
- 77+: C+
- 73+: C
- 70+: C-
- 67+: D+
- 63: D
- 60: D-
Q: Do you curve exams or final grades?
A: Maybe, but probably not. If exams or final grades are lower than I anticipated, then I may apply a curve. For final grades, if you are within 1% of the next letter grade, I will bump you up.
Late Assignment Policy
- < 24 hours: 25%
- < 48 Hours 50%
- > 48 hours: no credit.
Getting Help and Succeeding
This can be a tough class, and some of the assignments are tricky. Remember, if you feel challenged by this class,
that is a good thing! I (reese) am always here for you, and I am always happy to help troubleshoot, debug, and answer and questions you have. You can always email me or send me a Discord message, and I will respond as soon as I can. If you have a bug/coding issues, it is generally helpful to attach your code in the email/message.
You should always get help (from Reese, TAs, or Discord) sooner rather than later. This is a
very important class in the computer science curriculum, and it is
not a good class to slack off in.
Stay on top of lectures, get started on assignments early, and try to avoid taking zeros on assignments.
Collaboration Policy
All students should read the
MSU
Student Conduct Code.
All labs will be individual submissions. For programs, you are allowed to work with one partner. Each partner should submit to D2L (but make sure you indicate in your submission who your partner is).
When it comes to labs, you may
- Share ideas with other students in the class.
- Work together on labs in the same physical location.
- Help other students troubleshoot problems.
- Give hints or provide textbook page numbers/slide numbers to students seeking help
You may NOT
- Share your code and solutions directly with other students.
- Submit solutions that you did not write.
- Modify another student's solution and claim it as your own.
- Share your report or solutions directly on Discord
Failure to abide by these rules will result in an "F"
for the course and being reported to the Dean of Students.
Bots and AI
You should not use any bots or AI to develop your solutions on labs, programs, and exams. If it is found that you used such a tool, you will receive a zero on the assignment.
Plagiarism
You may not copy or modify solutions that are not your own (e.g. from the Internet, classmate, ...) for any graded material. Copying and pasting very small snippets of code is acceptable, however copying/pasting or stealing entire solutions from an external source is prohibited. I know how to use the Google and I have a Chegg membership, so If you find something, I will too! It is easy for me to tell if you copy and pasted code from the Internet, so please do not engage in such academic misconduct. If I find a student engaging in plagiarism, I will have to report you to the Dean of Students.
Copyright
Course Materials: The 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.