For course schedule, click here .
Course Logistics
Lecture
Monday, Wednesday, and Friday 3:10 PM - 4:00 PM
Location: Romney Hall 008
All lectures will be recorded and 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 001- Thursdays 10:00 - 11:50 AM
- Section 002- Thursdays 12:00 - 2:00 PM
- Section 003- Thursdays 2:10 - 4:00 PM
- Section 004- Thursdays 4:10 - 6:00 PM
Location: Roberts Hall 111
Q: Is lab attendance mandatory?
A: I encourage you to go to lab, but attendance will never be taken. Lab assignments are posted before Thursday, and can be completed from home.
Q: Do I have to attend the lab section that I registered for?
A: No. The labs will be staffed by TAs and lab assistants from 10AM to 6PM. You can stop by lab whenever you need.
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.
Instructors
Reese Pearsall
Email: reese.pearsall@montana.edu
Office Hours: Monday, Wednesday, Thursday, Friday 1:00 - 2: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
Iliana Castillon
Email: iliana.castillon@montana.edu
Office Hours: Monday, Wednesday, Friday 11:00 AM - 12:00 PM
Office: Barnard Hall 351
Teaching Assistants/Graders
- Section 001- Sultan Yarylgassimov
- Email: sultanyaril@gmail.com
- Office Hours: Thursdays 12:00 PM - 2:00 PM in Barnard Hall 259
- Section 002- Fatima Ododo
- Email: fatima.ododo@student.montana.edu
- Office Hours: Tuesdays 11:00 am - 1:00 pm in Barnard Hall 259
- Section 003- Sultan Yarylgassimov
- Email: sultanyaril@gmail.com
- Office Hours: Thursdays 12:00 PM - 2:00 PM in Barnard Hall 259
- Section 004- Fatima Ododo
- Email: fatima.ododo@student.montana.edu
- Office Hours: Tuesdays 11:00 am - 1:00 pm in Barnard Hall 259 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 notgrade any of your assignments
- Section 001
- Jesse Hruska
- Email: jthruska406@gmail.com
- Section 002
- Zachary Carmean
- Email: zach.ryan1@icloud.com
- Section 003
- Jasmine Hruska
- Email: jashruska406@gmail.com
- Section 004
- Garrett Mullings
- Email: mullingsgarrett@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
- Please email me if you need a 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: Arrays, 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
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 Thursday nights at 11:59 PM. Labs will be posted a day or two ahead of time. You can attend your lab section to work on the assignment and get help if needed.
- 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. 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/Iliana during their office hours.
- Midterm and Final Exam (15% each)- There will be two exams during the semester. The midterm will take place on Wednesday October 9th, and the final exam will be held during finals week. These exams will consists 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. We (the instructors) are here for you and we want to help you in whatever way that we can to help you succeed. You can always email one of us or send one of us a discord message, and we will respond as soon as we can. 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 onepartner. 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 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.