Introduction to Computer Science
Spring 2024
Key Information
Catalog Description - Hands-on introduction to programming using the Java programming language. Teaches fundamentals of programming and more advanced topics. Emphasizes algorithmic thinking and computational problem solving and provides an introduction to the concepts and methods used in Computer Science. Required for all CSC majors.
Credit Hours - This is a four credit class. This class follows the university credit hour policy and is expected to to require a typical time commitment of 8-12 hours per week.
Meeting Time and Location - TR 2:00-3:15 in Hutchinson Hall Room 141
Prerequisites - No formal prerequisites, but see Note 1.
Labs - You must also register for a lab and workshop to take the course. Labs are physical computer labs where students can practice programming with the help of student TAs. Some assignments may require you to demonstrate your work to your TA individually or in small teams. Attendance in labs is otherwise typically optional but encouraged.
Workshops - Workshops are small-group peer study sessions facilitated by students who receive training from then Center for Education Teaching, and Leadership (CETL). Workshop participation is required and graded based on collaborative problem solving exercises. Students who need to miss a workshop can complete the workshop activities on their own and connect with their workshop leader to receive credit. Workshops begin January 30th and occur every week except exam weeks. (See schedule for exam dates.)
Note 1 - This is the first required course for all CSC majors. There will be substantial programming assignments. Non-majors, or those looking for a gentler introduction to programming, may wish to consider taking CSC 161 instead of (or prior to) taking this course.
Note 2 - Almost all lectures in this course are cumulative, and early topics provide important foundations. Requests to enroll in this course after January 31st will not be approved.
Textbook and Materials - There is no official textbook for the course. Instead we will be referring to different online resources at different times. The first book (by Mayfield and Downey) provides a solid introduction to programming and computational thinking, and is recommended reading for all students. Concise examples and information on many topics can be found in the Oracle java tutorials.
-
How to Think Like a Computer Scientist , by Mayfield and Downey (2020). Available freely here. -- nearly all of this book will be helpful for understanding the course material. -
Head First Java, 3rd edition , by Sierra, Bates, & Gee (2022). Available through the library (requires login). This text provides a more stylized and accessible introduction for students seeking additional practice. - The official Oracle Java Tutorials are helpful on many topics. We will refer to the oracle tutorials for most topics, but especially so when covering collections and graphics.
- The Java Language and Virtual Machine Specifications define the language itself. These are highly technical but provide the "ultimate answer" to many nuances of Java.
- Additional materials (lecture slides and example code) will be posted to blackboard.
Staff
- Instructor: Adam Purtee
- Homepage: cs.rochester.edu/u/apurtee.
- Email: apurtee AT cs DOT rochester.edu
- Office: Wegmans Hall 2109
- Office Hours: Tuesdays 330-430 and Wednesdays 330-430.
Assignments
This course will require you to complete several (estimate: 8) individual programming assignments, and one larger course project, which may be completed alone or as a team. The course project will require you to implement non-trivial algorithms and to work with graphics, animation, and events. Tentative project domains include education, learning, video games, computation, and data science. Teams will be required to demonstrate and their solutions in lab, therefore all members of a team must be enrolled in the same lab section.
Grading - Your work will be graded using a combination of automated test cases and manual testing by the instructor or the TAs. AI will not be used to determine student grades or feedback in any way. Re-grade requests must be made within one week of grades being posted. Requests for partial or extra credit will typically be denied.
Submission and Deadlines - Regular assignments will be posted on an ongoing basis and due typically the week after they are assigned. Assignments should be submitted through Gradescope before each deadline. Late work will not be accepted.
Artificial Intelligence - it is unclear whether the benefits of AI for education yet outweigh the risks. The purpose of a university education is for you, personally, as a human, to acquire knowledge. If you use an AI tool to complete your homework, you may get a good grade for the assignment, but you will not have acquired knowledge of the subject material. Despite these risks, AI tools have advanced to a point where they can effectively answer many simple questions about programming, and may be helpful at identifying bugs, or explaining language features. If you choose to use AI tools, you should use them responsibly, and focus on increasing your own knowledge, rather than using them to complete your work. You're the one in college, not the machine; don't use a stunt double to get through this experience.
Use of AI to complete your homework - in whole or in part - is prohibited. The goal is for you to develop programming skills and knowledge of computer science. You are ultimately responsible for the work that you submit. You must be able to discuss and explain the logic of your submitted work at any time to the TAs and the instructor. Failure to adequately discuss your work may be grounds for reducing the grade or further consequences.
Exams
There will be two midterm exams and one comprehensive final exam in this course. The regular exams will occur in the lecture hall during class time on the days indicated by the schedule. The final exam time and location are determined by the registrar. The complete final exam schedule is available at the registrar's webpage.
All exams will be traditional, in-person, paper exams. No notes or electronics are permitted - smartphones, smartwatches, and headphones are all prohibited. Students found using electronic devices will be reported to the Board of Academic Honesty. There are no make-ups for missed exams, except in extraordinary circumstances. Students with documented accessibility issues should plan to communicate in advance with the disability services office to arrange proctoring. Students who miss more than one exam, or who miss the final, may be unable to pass the course.
The instructor reserves the right to include any material from the course on the exams, such as lab activities, workshops, suggested reading, and lecture content.
Students must present their university ID when turning in exams
Grading
Your Overall Numeric Grade
Your scores on the individual components of this course will weighted to obtain your course score. All appeals of grades on individual scores must be made within one week of the grade being available. The following table represents this weighting of components.
Category | Weight |
Workshops | 10% |
Homework | 25% |
Project | 10% |
Midterm 1 | 15% | Midterm 2 | 15% |
Final Exam | 25% | Total | 100% |
Letter Grades
Letter grades will follow the Official University of Rochester Grading Scheme. Note that the University scheme puts “average” somewhere between C and B. The following table is an estimate of how the numeric grades will map onto the letter grades.
Letter Grade | Threshold |
A: Excellent | >=94% |
A- : | >=90% |
B+: | >=87% |
B: Above Average | >=83% |
B-: | >=80% |
C+: | >=77% |
C: | >=73% |
C-: Minimum satisfactory grade | >=70% |
D: Minimum passing grade | >=60% |
E: | <60% |
Schedule
CNum | Date | Day | WNum | Topic | Reading |
1 | Jan 18 | Thu | Getting Started | Think Java Ch 1 | |
2 | Jan 23 | Tue | Not Yet | "Variables values and expressions." | "Think Java Ch 2 3 4" |
3 | Jan 25 | Thu | Making Decisions | Think Java Ch 5 | |
4 | Jan 30 | Tue | W1 | Iteration | Think Java Ch 6 |
5 | Feb 01 | Thu | Fine-grained control | Think Java Ch 6 | |
6 | Feb 06 | Tue | W2 | Methods | Think Java Ch 4 |
7 | Feb 08 | Thu | Arrays | Think Java 7 | |
8 | Feb 13 | Tue | N/A | Review | n/a |
9 | Feb 15 | Thu | Midterm 1 | n/a | |
10 | Feb 20 | Tue | W3 | "Objects State and Behavior" | "Think Java 9.1-9.4 10.1-10.4" |
11 | Feb 22 | Thu | Defining Objects | Think Java 11-11.7 | |
12 | Feb 27 | Tue | W4 | Encapsulation and Scope | "Think Java Ch 12 (13)" |
13 | Feb 29 | Thu | "Inheritance Polymorphism and Abstract Classes" | Think Java Ch (14) | |
14 | Mar 05 | Tue | W5 | Drawing with Graphics | Think Java Appendix C; Oracle tutorials. |
15 | Mar 07 | Thu | Interfaces and Events | "Oracle tutorials + Lecture Notes Think Java Ch 17" | |
* | Mar 12 | Tue | N/A | No Class - Spring Break | n/a |
* | Mar 14 | Thu | No Class - Spring Break | n/a | |
16 | Mar 19 | Tue | W6 | Reusable Components | Oracle tutorials + Lecture Notes |
17 | Mar 21 | Thu | Layout and Animation | Oracle tutorials + Lecture Notes | |
18 | Mar 26 | Tue | W7 | Using Generic Collections -- Lists | Oracle tutorials + Lecture Notes |
19 | Mar 28 | Thu | Using Generic Collections -- Maps | Oracle tutorials + Lecture Notes | |
20 | Apr 02 | Tue | N/A | Midterm Review | n/a |
21 | Apr 04 | Thu | Midterm 2 | n/a | |
22 | Apr 09 | Tue | W8 | Writing Generic Methods and Classes | Oracle tutorials + Lecture Notes |
23 | Apr 11 | Thu | Exception Handling | Oracle tutorials + Lecture Notes | |
24 | Apr 16 | Tue | W9 | File IO | Oracle tutorials + Lecture Notes |
25 | Apr 18 | Thu | Recursion - search and fractals. | Think Java Ch 8 | |
26 | Apr 23 | Tue | W10 | DIY LinkedLists | Lecture Notes |
27 | Apr 25 | Thu | DIY HashMaps | Lecture Notes | |
28 | Apr 30 | Tue | N/A | Final Review | n/a |
May 9 | Thu | Final Exam -- 4pm-7pm (subject to registrar decisions) |
Policies
Academic Honesty
All assignments and activities associated with this course must be performed in accordance with the University of Rochester’s Academic Honesty Policy. More information is available at: www.rochester.edu/college/honesty
By default, all work must be completed on your own. You may discuss the assignments at the level of ideas with your peers, but you should not share any code. You should avoid using two open laptops side-by-side (i.e., do not simply copy another student's work by retyping it.) You should avoid obtaining any solutions from the internet; instead, you should refer to example programs posted by the instructor and corresponding examples from relevant suggested reading materials. Note that this also applies to solutions obtained from AI assistants, which are strictly forbidden.
All incidents of academic dishonesty will be reported. Violations of the academic honesty policy carry significant penalties, such as a zero on the assignment and additional reduction by whole letter grades. (I.e., from B+ to C+). Repeat offenders may be expelled from their majors and from the university.
Inclusivity
It is my hope that all students, TAs, and workshop leaders in all my courses feel welcome, respected, and supported. If you have any concerns please contact me directly or reach out to a university Ombudsperson.
Disability Resources
The University of Rochester respects and welcomes students of all backgrounds and abilities. In the event you encounter any barrier(s) to full participation in this course due to the impact of disability, please contact the Office of Disability Resources. The access coordinators in the Office of Disability Resources can meet with you to discuss the barriers you are experiencing and explain the eligibility process for establishing academic accommodations. You can reach the Office of Disability Resources at: disability@rochester.edu; (585) 276-5075; Taylor Hall.
Students with an accommodation for any aspect of the course must make arrangements in advance through the Disability Resources office. Then, as instructed by the office, contact the instructor to confirm your arrangements.
Resources
There are two kinds of additional tutoring available to CSC 171 students. Please note that tutors often work with many students, so their time is limited. To make best use of available tutoring, be sure that you spend sufficient time studying and working on your programs before visiting them. Your first stop should be your registered lab section -- the TAs have all aced this course, they coordinate weekly with the instructor, and several of them have been TAs before; they are your #1 resource!
CETL Tutoring
Tutoring is a free service available for any undergraduate of the University of Rochester. The Center for Excellence in Teaching and Learning (CETL) provides structured tutoring services. For more information, visit www.rochester.edu/college/cetl/undergraduate/tutoring.html
CSUG Tutoring
CSUG is the Computer Science Undergraduate Council. These students graciously volunteer their time to help other students, especially students in introductory and core courses. They are not directly involved with the instructor. For more information, visit www.csug.rochester.edu/ugc/tutoring/