For course schedule, click here .
Course Logistics
Lecture
Monday, Tuesday, Wednesday, and Thursday 2:00 PM - 4:20 PM
Location: Barnard Hall 126 (Lecture)
The "lab" portion of the class will take place in Barnard Hall 254 (CS computer lab)
I will likely lecture for only 60 - 90 minutes, and leave the remaining time as "lab section" time, where you can work on any assignments (labs/programs). Attending lab is optional.
NOTE: This is a 16-week course condensed into a 6-week course. This course moves fast, and there will usually always be 1-3 assignments due every week. This is NOT a good course to ignore or slack off in. It's important that you keep up with class and check the course website every day. You should expect to put several hours into this class every week. I promise it won't be miserable. I will always be here for you, and if you are struggling/need more time, I am always happy to help in whatever way that I can.
This class can be taken fully remotely if needed. All lectures will be recorded and put on this website (hopefully by 3:30 PM MST), as well as all other class material (notes, code, assignments, etc). If you are taking this class fully remotely, you will need to meet with me virtually once during the summer (see the "Grading Breakdown" section below)
Starting this Summer, Montana State University will start using Canvas (https://ato.montana.edu/canvas/) as their learning management system. Brightspace/D2L is no longer being used. You will be uploading your assignments to Canvas, and we will be posting grades to Canvas.
Instructor
Reese Pearsall
Email: reese.pearsall@montana.edu
Office Hours: Tuesday, Wednesday, Thursday 3:30 PM - 4:30 PM and by appointment
Office: Barnard Hall 254 or Barnard Hall 361
Discord: @reese_p
I will also be available remotely/virtually during those times.
If you need to meet with me virtually during my office hours, please send me an email or Discord message, and I will send you a link to a Webex room.
Appointment Scheduling: You can schedule a appointment with me throughout the Summer (in fact, I will require you to do it at least once). Appointment scheduling can done through NavMSU with this link:
https://montana.campus.eab.com/pal/8IuEeE9P5U. My availability is very flexible throughout the Summer. I can do same-day appointments, but you will need to send me an email or Discord DM instead of NavMSU.
Grader
- Mahmud Sarker (Safat)
- Email: sarkersafatmahmud@montana.edu
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
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.
- Be able to formally detail the performance of an algorithm and identify the factors limiting that performance.
Grading
30% - Labs (8 @ 4.3% each, I will drop your lowest lab grade)
40% - Programs (4 programs, 10% each)
20% - Quizzes (Online) (3 quizzes @ 6.67% each)
10% - Participation/Check-In
Grading Breakdown
- Labs- These are assignments that are assigned once or twice a week 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. Labs are due at 11:59 PM on the listed due date. I will try to post Labs a few days ahead of time. You can work on these assignments during the "lab section" of our class time, and you can get help from Reese.
- Programs- Programs are more lengthy programming assignments that will take more of your time to complete. There will be 4 programs assigned throughout the semester, and are due on their specified due date at 11:59 PM.
You will be given at least a week to complete them. 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 Reese during lab section time, during office hours. You can also arrange a time with me outside of class/office hours to get help. Reese will write a little bit of starting code for you during lecture.
- Quizzes- Instead of having in-person exams, there will be 3 online quizzes this semester. These will be administered via Canvas, and you can do them at point during the day they are happening (6:00 AM - 11:59 PM). You will have only one attempt, but they are not timed. These quizzes will test you on more of the conceptual/theory topics of our course material (you won't need to do any lengthy coding). The quizzes will have multiple choice, true false, and short answer questions.
- Participation/Check-In- Because this is a Summer course that moves much faster than the average 16 course, I am making participation a portion of you grade to help ensure you are doing well in the course, and are not falling behind. There are a few ways you can earn points for this:
- Attend lecture/lab time
- Attend Reese's office hours
- Schedule a meeting with Reese. If you are taking the class fully remotely, you will need to meet with me virtually at least ONCE during the Summer for a quick check-in meeting. This can occur during office hours, or you can arrange a time to meet with me via my appointment scheduler. This will be just a quick check in to help make sure you are doing ok in the course. I just want to make sure I talk with everyone at least once this Summer.
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.
Grading Deductions
A major emphasis this Summer will be to submit code that compiles. If you submit an assignment, but the TA is unable to compile it due to errors, you will receive an automatic zero. You can fix this later on, but we will not grade any code that does not compile. If you can't get your program working properly, that's fine, but you need to fix/modify your program so that it at least compiles.
ANOTHER NOTE FROM REESE- I want you to be able to enjoy your Summer, without being bogged down by the workload in this class. If you have a legitimate reason (Summer plans, travel plans, work plans, etc) and you need more time on an assignment, I am usually ok with giving you an extension, just send me an email or Discord DM. Please do not take advantage of my generosity.
Getting Help and Succeeding
If you get behind or confused early on, it will make the rest of the class very difficult. This course IS NOT a good class to slack off/mentally check out in and it is NOT nice to people that don't ask for help if they need it. I (reese) am also here for you and I want to help you in whatever way that I can to help you succeed. You can always email me or send me a discord message, and I will respond as soon as I can. You should always give yourself enough time to complete the assignments, and you should never start programs the night they are due (remember that bugs and issues will likely come up as you are coding!!!).
Collaboration Policy
All students should read the
MSU
Student Conduct Code.
For programs, you are allowed to work with onepartner. Each partner should submit to D2L (but make sure you indicate in your submission who your partner is).
When it comes to programs, 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 that are not in your group.
- 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 or programs. 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.