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.



Staff




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.


CategoryWeight
Workshops 10%
Homework 25%
Project 10%
Midterm 1 15%
Midterm 2 15%
Final Exam 25%
Total100%

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


CNumDateDayWNumTopicReading
1Jan 18ThuGetting StartedThink Java Ch 1
2Jan 23TueNot Yet"Variables values and expressions.""Think Java Ch 2 3 4"
3Jan 25ThuMaking DecisionsThink Java Ch 5
4Jan 30TueW1IterationThink Java Ch 6
5Feb 01ThuFine-grained controlThink Java Ch 6
6Feb 06TueW2MethodsThink Java Ch 4
7Feb 08ThuArraysThink Java 7
8Feb 13TueN/AReviewn/a
9Feb 15ThuMidterm 1n/a
10Feb 20TueW3"Objects State and Behavior""Think Java 9.1-9.4 10.1-10.4"
11Feb 22ThuDefining ObjectsThink Java 11-11.7
12Feb 27TueW4Encapsulation and Scope"Think Java Ch 12 (13)"
13Feb 29Thu"Inheritance Polymorphism and Abstract Classes"Think Java Ch (14)
14Mar 05TueW5Drawing with GraphicsThink Java Appendix C; Oracle tutorials.
15Mar 07ThuInterfaces and Events"Oracle tutorials + Lecture Notes Think Java Ch 17"
*Mar 12TueN/ANo Class - Spring Breakn/a
*Mar 14ThuNo Class - Spring Breakn/a
16Mar 19TueW6Reusable ComponentsOracle tutorials + Lecture Notes
17Mar 21ThuLayout and AnimationOracle tutorials + Lecture Notes
18Mar 26TueW7Using Generic Collections -- ListsOracle tutorials + Lecture Notes
19Mar 28ThuUsing Generic Collections -- MapsOracle tutorials + Lecture Notes
20Apr 02TueN/AMidterm Reviewn/a
21Apr 04ThuMidterm 2n/a
22Apr 09TueW8Writing Generic Methods and ClassesOracle tutorials + Lecture Notes
23Apr 11ThuException HandlingOracle tutorials + Lecture Notes
24Apr 16TueW9File IOOracle tutorials + Lecture Notes
25Apr 18ThuRecursion - search and fractals.Think Java Ch 8
26Apr 23TueW10DIY LinkedListsLecture Notes
27Apr 25ThuDIY HashMapsLecture Notes
28Apr 30TueN/AFinal Reviewn/a
May 9ThuFinal 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/