Welcome to CSC120: Object-Oriented Programming! Below is some important information about how the course will run, as well as some specific “expectation-setting” details about what we will (and won’t!) cover.
This is a programming-intensive course, designed to help early-stage programmers transition into developing software engineers. While programming can be a truly interesting, challenging and rewarding intellectual activity, it is almost impossible to learn it without a lot of practice. This takes time, especially for debugging a troublesome program that isn’t quite working right yet.
For this reason, the course features a SEMI-FLIPPED CLASSROOM. This means occasionally you’ll be asked to watch short prerecorded introductions for certain topics and complete some activities before class, and we’ll spend our time together in class writing code, starting assignments, and applying the concepts from lecture in real-world contexts. However, this model only works if you commit to the process… and if this is your first experience in a semi-flipped classroom, it might feel a little overwhelming. Here are some useful tips to help orient you to this model (adapted from UC Boulder’s Succeeding in a Flipped Classroom:
Expect work to be continuous Rather than cramming for large exams that happen after classes, you are required to keep up with frequent assignments, readings, and videos that are due before class. One way to set yourself up for success is to get into the habit of completing your pre-class tasks at the beginning of the semester. Keep up with Discord and Moodle for updates and assignments.
Show up present and prepared Be present in class, physically and mentally, to the best of your ability. Be ready engage in class discussions and activities. Ask questions to clarify your understanding of concepts, offer your own perspective, and try not to be afraid of giving “wrong” answers – misconceptions and false starts are a normal, healthy part of learning (and we professors guarantee we’ll make plenty of our own mistakes for you to catch!)
Use prerecorded lectures and readings to your advantage While watching prerecorded mini-lectures may seem like a pain (or just a way for your Prof. to get out of lecturing :-P), they provide opportunities to learn at your own pace as well as get the perspective of other instructors (as many of the videos we will use to lay the foundation for this course come from beyond Smith). If you benefit from rewatching videos or pausing to try something out on your own, please do! Many students find it helpful to take notes while watching prerecorded lectures, just like they would in a traditional class.
Your education is everyone’s priority If you find yourself spending inordinate time debugging your programs without really making progress, it’s time to reach out – before you fall behind, or it affects your work in other courses. Your professors and TAs are eager to help you find strategies that work for you, and that enable you to reach your goals in the course. In addition to us, the college has many resources for academic success, all available at no cost.
Give honest feedback All teaching is improvable, and so we’ll ask for your feedback often. We want to know what is going well and what is tough. Being open and constructive will help us to improve the class, both for future students and for you.
There is no required textbook for this course: all required readings and videos will be made available through Moodle. However, the following recommended textbook is a good choice for those who find them useful as references. It is available for free online, or you can purchase a hard copy from your favorite bookstore:
If you need help covering the cost of textbooks or other academic supplies (for this or any of your courses!) please fill out the Academic Funding Application found at socialnetwork.smith.edu/forms.
This course builds a strong foundation in object-oriented programming. It is designed for CSC majors who have completed a first course in programming. If this isn’t you, don’t worry! You’re still very much welcome here. Just be mindful that some self-study before the course starts may be necessary (see What We WON’T Cover).
Here’s a selection of topics we will cover:
This course assumes that you have a solid foundation in computational thinking, either through successful completion of CSC110, high school curriculum at at AP or IB level, or dedicated self-study. As such, we expect you to come to class with a solid understanding of the following topics (which we may recap briefly to establish common language, but which won’t be covered in substantial detail):
Proficiency with various computer environments and infrastructure will also come in handy (though we will go over some of this in class together). Check out the following links to supplemental online courses through LinkedIn Learning if you’d like some additional support, which are available for free to all members of the Smith community:
All written communication regarding this course will take place via Discord (a cloud-based communication platform that supports text, voice, and video). This includes:
Even if you’re not used to Discord at first, it’s not too hard to learn. The advantages of having all course communications in one place are compelling. Use Discord!
There are three forms of assessment in this course:
Weekly programming assignments will be introduced in class on Thursdays (sneak peek on Wednesday nights), and we will work together to get started on them during class time. Final submissions will be due Wednesdays at 11:59PM EST. Because our lives and learning do not always go as planned, every student will be able grant themselves extensions on homework assignments. Read details on how to request an extension here.
Programming is more fun in groups! Students are strongly encouraged to form study groups and to collaborate in solving the assignments. Please ensure that all work you submit is ultimately the product of your own understanding rather than anyone else’s. You may consult online or print references on all assignments and labs. Standard language references showing syntax, usage, documentation, etc. need not be cited; nor does the course textbook. All other resources must be cited as described below.
The following information is required for all submitted work:
In this course, students are permitted to utilize AI-powered code-completion tools, provided you do so while adhering to responsible and ethical practices. These tools can provide valuable assistance in enhancing your programming efficiency and proficiency. You are permitted to incorporate AI code-completion suggestions into your coding assignments and projects, as long as proper attribution is given. Generative AI (e.g. ChatGPT or similar) cannot be used for written reflections in CSC120.
Guidelines for Using AI Code-Completion:
Attribution: We’ll treat AI code-completion tools as “collaborators” in this class. Whenever you get help with your programming tasks, it is crucial to provide clear and transparent attribution. Include a comment or annotation in your code specifying that certain sections were generated with the help of an AI code-completion tool.
Originality: While AI code-completion can offer valuable insights and suggestions, it is important that the final code reflects your understanding of the material. For this reason, you should avoid copying generated code without understanding what it does; instead, use it as a reference to enhance your own programming skills.
Learning Opportunity: View AI code-completion as a supplementary learning resource. Take the time to assess the suggestions provided by the tool and compare them to your own coding decisions. This process can contribute to a deeper understanding of the programming concepts we cover.
Honor Code: Always prioritize academic integrity. Plagiarism, which includes submitting someone else’s work (including AI-generated content) without proper attribution, is a violation of our community’s ethical standards and course policy.
Discussion and Collaboration: While using AI code-completion, feel free to engage in discussions with peers and instructors about the generated code and how it aligns with course concepts. Collaborative learning and constructive feedback can enrich the educational experience.
Diverse Approaches: Keep in mind that there are generally many “right” ways to solve a programming problem. AI-generated suggestions might present one approach, but exploring alternative solutions on your own or through discussions is highly encouraged.
Human Power: All AI is developed by other humans and trained on data generated by millions of our peers. Generative AI regurgitates and remixes existing information. Do not be fooled into thinking it “knows” more than you.
Remember: the primary goal of this course is to enhance your programming skills and understanding of the subject matter. Utilizing AI code-completion tools with attribution can support this goal, but the responsibility lies with you to ensure that your work reflects your own efforts and comprehension.
Category | Percentage |
---|---|
Homework | 60% |
Skill Checks | 20% |
Final Project | 15% |
Participation and Engagement | 5% |
Note that the final grade is based on our evaluation of your work, and every effort will be made to communicate expectations in advance through detailed rubrics. Although the grade will be largely based on the percentages shown above, we reserve the right to award extra credit for excellent work and out-of-the-box thinking. For example, while “Participation and Engagement” will look primarily at day-to-day engagement, we will also take note of contributions both in and out of class which demonstrate intellectual curiosity or clear understanding of a topic, as well as comments which help others to learn a difficult concept.
We aim to make this course accessible to all and welcome feedback about changes we can make to meet that goal. If you encounter barriers to participation in this or any other course, please register with the Disability Services Office to request support and accommodations.
Everyone is welcome to make themselves comfortable in our classroom and asked to be respectful of one another. When you are communicating, please practice active listening by focusing on understanding what others are expressing rather than thinking of how you will respond. Additionally, keep in mind that our wide array of individual backgrounds shape our unique perspectives, so please respect one another when we have sincere differences of opinion.
You may bring beverages or snacks, but please use closed containers to avoid spills and keep messy foods away from computers. Everyone is free to use concentration accommodations like fidget toys, knitting, doodling, moving around, or sitting on the floor; just be mindful your focus does not disrupt others. Parents and caregivers may bring their babies and children to class whenever necessary. Learners of all stages are invited to join us.
Some of the materials used in this course are derived from lectures, notes, or similar courses taught at other institutions. Appropriate references will be included on all such material.