For course schedule, click here .
Course Logistics
Lecture
Monday, Wednesday, and Friday 3:10 PM - 4:00 PM
Location: Norm Asbjornson Hall 165
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- Tuesdays 10:00 - 11:50 AM
- Section 004- Tuesdays 12:00 - 2:00 PM
- Section 005- Tuesdays 2:10 - 4:00 PM
- Section 006- Tuesdays 4:10 - 6: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: Monday and Wednesday 1:00 - 2:00 PM, Tuesday and Friday 12:10 - 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 if needed. Email me to arrange a time
Instructor Illness
I am currently in the midst of battling a chronic health condition (non-communicable). Because of this, I am generally not around in-person during the mornings (but you can still easily email/message me).
There may be days where I have to unexpectedly cancel class, or have you watch a recorded lecture instead. If things get really bad (they shouldn't), then it is possible we have to move to an online only format for a short period of time.
Teaching Assistants/Graders
- Section 005- Fatima Ododo
- Email: fatima.ododo@student.montana.edu
- Office Hours: Wednesdays 3:10 - 5:10 PM in Barnard Hall 259
- Section 004- Shama Maganur
- Email: shama.maganur@gmail.com
- Office Hours: Wednesdays 3:10 - 5:10 PM in Barnard Hall 259
- Section 003- Shama Maganur
- Email: shama.maganur@gmail.com
- Office Hours: Wednesdays 3:10 - 5:10 PM in Barnard Hall 259
- Section 006- Fatima Ododo
- Email: fatima.ododo@student.montana.edu
- Office Hours: Wednesdays 3:10 - 5:10 PM in Barnard Hall 259
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
- Ryan Dryer
- Email: rrdreyer13@gmail.com
- Section 004
- Jordy Hexom
- Email: jordyhexom@gmail.com
- Cooper Senior
- Email: cooper.senior@student.montana.edu
- Section 005
- Simon Collins
- Email: simon.collins@ecat1.montana.edu
- Connor Carlson
- Email: connorw.cc@gmail.com
- Section 006
- Brian Schumitz
- Email: brian.s.schumitz@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
- I am literally always on Discord, so you always shoot me a DM whenever.
Other Resources
Catalog Description
- Credits: 4
- Prerequisite: CSCI 127- Joy and Beauty of Data (Required)
- Prerequisite: M 151Q- Precalculus (Required)
- Description: 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
Note from Reese: Before taking this class, you should feel comfortable with basic programming constructs (functions, variables, loops, if statements, etc)
Course Outcomes
By the end of this course, students should be be able to:
- Design and Implement programs of simple and moderate complexity in Java
- Explain the concept of an ADT
- Understand and implement basic data structures: Linked lists, stacks, and queues
- Given a simple algorithm, determine the time complexity using Big-O notation
- Understand basic searching and sorting algorithms and their runtime
- Understand how recursion works, be able to analyze recursion runtime, and be able to implement recursion in a program
- Be able to debug programs and become an independent problem solver
Grading
30% - Labs (12 @ ~2.5% each) (I will drop your lowest lab grade)
40% - Programs (5 @ 8% each)
15% - Midterm
15% - Final Exam
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. Labs are due on Tuesday nights at 11:59 PM. Labs will be posted a day or two ahead of time. You should attend your lab section to work on the assignment, and get help if needed.
- Programs- Programs are more lengthy programming assignments that are done outside of class/lab time. 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. 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.
- Midterm and Final Exam (15% each)- There will be two exams during the semester. The midterm will take place the week before spring break, and the final exam will be held during finals week. These exams will consist of conceptual topics we've discussed during the semester, and possibly some coding questions. I will make it very clear what you can expect on the exams beforehand :-)
- Rubber Duck Extra Credit (1%) (Optional) - You will given a rubber duck to take care of during the semester. If you still have your rubber duck, and it is still alive and well by the end of semester, you will get some extra credit added to your final grade.
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
We go through the basics of Java pretty quick in this class (the first 3 weeks). 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 can generally expect a response back within 5ish hours). You should always give yourself enough time to complete the assignments, and you should never start programs the day 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.
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.