Class Information
Class Schedule and Office Hours
Professor: Pablo Frank Bolton (pfrank at smith)
Research interests: Human-Robot Interaction, Robotic Perception, STEM education
Class Schedule:
- Check Moodle!!
Attendance is mandatory and will be recorded using lists and quizzes.
Contact for Class stuff: Use Slack (fastest), office hours (most detailed), or can also email me (slowest).
Office Hours:
- TBD : Fill out the when2meet poll that is under the Office Hours section in Moodle <!– Times:
- Monday 4:00 PM to 5:00 PM Ford 316 or the Study Nook next to Ford 322 (both shown below).
- Friday 2:30 PM to 3:30 PM Ford 316 or the Study Nook next to Ford 322 (both shown below). –>
- Open Door Policy: If you find my office door open and I’m inside, feel free to ask for help.
Location of OHs:
Check Moodle!!
Office Hour Rules:
- “open office hours” (TBD) are available to everyone, in groups or individually.
- “appointment slots” (TBD) are by request (usually reserved for 1-on-1)
- Remember: I can help you debug code on pythonanywhere remotely. Just mesage me over Slack.
- If you need in-person coding help, bring your question/bug prepared.
- If you solve your issue before a scheduled appointment, cancel the appointment. No-Shows are bad!
- Check the class notes / Slack before to check if questions have been answered already.
- Show up on time! and have your question/program ready, otherwise your time will not be enough.
- You can’t book an appointment fewer than 2 hours before the desired time.
Class TA: TBD
Tutoring: TBD
Objectives and Structure
CSC 110 is a gentle introduction to designing programs (recipes) for systematically solving problems. Students will learn to build programs including designing, coding, debugging, testing and documenting them. An introduction to block-structured procedural control flow including branching, iteration, and functions, using primitive and simple data types (lists). Students will understand the high level internal operation of computer systems (inputs, outputs, processing, and storage) and their application. Students will be exposed to the social and historical aspects of computing. This course is recommended for those who have no prior experience in computer science at the high school, AP, or college level.
Objectives - In completing this class, students will…
- Design a sequence of steps that can solve a problem. The steps will involve actions Python can do and the problems usually refer to those that refer to “symbol” manipulation (math, text processing, graphics, etc).
- Create and document computer programs using correct Python syntax that can be readily understood and used by other programmers.
- Propose algorithms in order to analyze problems that use basic control flow constructs (e.g., if-then statements, loops, functions, lists, simple input-output).
- Demonstrate foundational development techniques, including top-down design, program documentation, modular design, and library usage. <!–
- Understand the high-level internal operation of a computer, including the central processing unit, simple memory management. –>
Effort Expectations: This class is an introductory class. This means it is designed to start with little to no prior experience and cover the basics. This does not mean it is necessarily easy. The course is a 4-credit course, which means you should expect to work around 12 hours per week.
The recommended distribution is:
- approximately 4 hours of class time
- approximately 5 hours every week on homework assignments
- approximately 3 hours every week reading or studying (before and after class).
If you follow this general routine, the class should not be too challenging and it will tend to “feel” easy. If you do not follow this time investment, you will feel accumulating pressure.
Summary: Please put the time in to make sure you don’t feel unnecessary stress.
Course Topics: In CSC110 we will cover the following topics, but not necessarily in this order):
- Components of a computer at an abstract level (i.e., input, output, storage, computation) and physical level (i.e., hard drive, CPU, keyboard, etc.)
- Functions
- Conditionals, Math Operators, Logical Operators
- Loops and Iteration
- Variables and Data Types
- Strings
- Lists
- Dictionaries
- Basic Graphics
- Reading and Writing to Files Storage
- User inputs and print formatting
- Intro to the concept of an algorithm (e.g, as a recipe)
In addition to these core programming concepts, we will also work on some soft skills:
- Programing problem solving
- File systems (e.g., files, storage as bytes) and the cloud
- Pair programming
- Doc strings and commenting code
- Testing code (esp. thinking of edge cases)
- Debugging and tracing code
- Designing a program (e.g., software development methodologies)
- Impacts and applications of Computing (e.g., social, ethical, historical)
- Pseudocode 101
Prerequisites and Student Responsibilities
This course is recommended for those who have no prior experience in computer science at the high school, AP, or college level. Not open to students who have taken CSC 111. May not be taken concurrently with CSC 120.
Prerequisites: This course does not have any prerequisites. In this class, we will not assume that you have prior computer science or programming experience. If initially you find the pace of class too slow and homework too easy, then you are invited to help your peers in the lab, until everyone has caught up to your prior experience. To this end, everyone is expected to respect and honor the unique perspectives each participant brings to this course and work to help one another.
Responsibilities:
- Attendance: You should attend all classes unless you have a valid excuse. I will use Moodle/Qualtrics Quizzes and Google forms to take attendance at least once a week. Unexcused missed classes mean a loss of points in “Attendance and Participation”.
- START EARLY: the hardest part of any assignment is starting it. This is doubly so in programming, since the assignments have a lot of instructions and moving parts. I recommend starting assignments the same day they are issued so that you “break the ice”. I promise that if you develop this habit, you will see the results immediately.
- Communication: The college and your instructor will really try to be there for you. We want you to succeed and enjoy your experience. To do so, we need to know how you are doing. So: please see me in office hours, participate in class (asking questions is the best way!), and keep an eye out for discussions on Slack.
Course Materials
- Moodle: Course full name “CSC110-<section>: Introduction to Computer Science”
- PythonAnywhere (PA): PA is a cloud based platform that allows the creation, assigning, completion, testing, and grading (manually) of programming assignments. You need to register for it (you'll receive an invitation from the instructor) so you can complete readings, exercises, and assignments.
- Slack: You'll receive an invitation to a workspace: CSC-110-<section and term>
- Online Book: We’ll use the book How to Think Like a Computer Scientist: Interactive Edition (FREE) for readings and exercises. The book is linked to a Runestone Academy “course” called smithcollege_thinkcspy_fall24. The instructions for registering are found in Moodle.
Books:
You do not need to buy any textbook to be successful. The readings will be from free online sources. Below are textbooks that you may want to review as a resource and some students have found helpful in the past:
- How to Think Like a Computer Scientist: Interactive Edition (FREE) . Runestone Interactive Project at Luther College, led by Brad Miller and David Ranum.
- Think Python; 2nd edition (2015). Allen B. Downey. ISBN: 978-1491939369 (Note: eBook available for FREE).
- Python Programming: An Introduction to Computer Science. John M. Zelle. Franklin, Beedle & Associates; 3rd edition (August 8, 2016). ISBN: 978-1590282755 (Note: This is the newer edition, but the 2nd edition is also fine as a reference)
The Downey and Zelle books have been put on course reserve at the Library. 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 (you must login before the forms will appear).
Course Dynamics
In this course, the best way to learn is by applying the concepts into exercises and projects. We will therefore try to reduce the “lecture” time and increase the “practice” time in every class. To achieve this, we will have students read before every class. Readings are compulsory and are necessary to be able to achieve the objectives in every class. The readings will have exercises which will form part of your grades.
We will also have off-line concept quizes (~15 minutes) where we will ask about concepts discussed during the week. Monday and Wednesday classes will include concept recaps, Q&A, and some exercises to nail down the concepts, whicle Friday classes will mostly focus on in-class labs (longer exercises).
Attendance is extremely important. You should always inform the teacher before missing a class (through direct Slack message) and schedule an OHs meeting before returning to the next class.
Individual work will comprise most of the assignments but you will have at least two group projects, including the final project.
Grading
The final grade for this course is S/U (Satisfactory/Unsatisfactory); However, the way we will obtain this grade will be by running a “Normal” grading scheme and converting grades the following way:
- 0% to 69.9% : Unsatisfactory
- 70% to 100% : Satisfactory
Grade Calculation:
(The following grade calculation may be modified slightly depending on how the semester progresses)
- Homework Assignments (6-8 graded assignments): 30%
- Weekly Quiz Grades (6-8 graded quizzes): 20%
- with point recovery opportunities
- Participation (many ways to do it): 20%
- class Attendance
- in-class participation
- Weekly Book Exercises (and readings)
- Attendance to office hours
- Polls and surveys
- Final Project (3-week final project): 30%
Late Submissions:
We will accept no late submissions without a valid excuse. The homework and projects are designed to have “checkpoints” so that you MUST show your progress at every point. Most homework assignments have “tests” that let you see exactly what is missing. If you have a valid excuse, then you will be granted small extensions.
Also, for Office Hours, you must show progress up to the point where you got stuck.
Accommodations:
As individuals, we learn in different ways. I try to vary the activities used during the course to suit a variety of learning patterns, and I am always open for suggestions. Please come talk to me if you have an idea that will make the course more accessible to you and/or other students. If you need special accommodation, like extended exam time, please submit requests for accommodations in writing with proof of College support from the Office of Disabilities Service within the first two weeks of class. Let me know if you need help with this process.
Academic Honesty
Team assignments require collaboration amidst each team, but no collaboration between teams is permitted without explicit permission. If you did not work in a team then you are not allowed to collaborate on the homework assignments. We use software to compare submissions, so please don’t risk it. If you’re having significant trouble with an assignment, please contact me.
Please check the Student Handbook to see the rules for Academic Integrity.
Just as you can do a google search for code online, it is trivial for us to do the same. If you feel pressured about an assignment, please come see me instead of cheating.
Use of generative artificial intelligent (AI) and AI assistants in this class:
It is likely true that every problem and question in this course is solvable via ChatGPT or GitHub Copilot. This was true before these AI assistants came on the scene. Possible solutions to most problems in this type of course were used to train Copilot and were already available on the internet to those who know how to use a search engine. I could make a moral or ethical argument to you about how it is dishonest to use these tools in this class. Instead, I argue that the purpose of me teaching this class is to train you to think through programming problems. This skill will prove valuable in future CS courses and for your future no matter your career aspirations. Students who go on to further CS education without internalizing basic programming constructs and foundational CS principle significantly struggle with intermediate CS concepts. Therefore, you are explicitly forbidden from using generative AI in this course. Use of generative AI in this course constitutes a violation of Smith’s Honor Code.
Academic and Mental Health Resources
The following are resources available to you that may provide assistance and support during the semester. They provide help for learning, mental health, and wellness.
Learning resources:
- Spinelli Center for Quantitative Learning
- Jacobson Center for Writing, Teaching, and Learning
- Teaching, Learning and Research Librarians
Mental Health and Wellness resources:
Additional support resources:
Anonymous Feedback Form
We will add a link inside Moodle to an anonymous feedback form so you can let us know if there is anything getting in the way of your learning.
Comments from previous semesters
I usually add a section with the exact copies of recomendations from students in previous semesters. Since ALL of them are exactly of the same vein, I smiply summarize them here:
- Ask for Help: If you already know everything, you should be in the next class. Otherwise, you are exactly in the right class and the way to learn is to ask. Go to Office Hours often, even if you only need a safe space to work in. Go to TA-hours, they are great and know all the tricks. Ask your classmates! (just don;t share code).
- Plan Before Coding: You are going to want to start using your keyboard before thinking about the problem… THAT IS THE ENEMY. Stop yourself and plan ahead. Write your idea in english or in bullet points, or even draw a diagram of the steps that will be needed. It might take 5 minutes before you ca start, but it will save you HOURS of debugging.
- Start Early: Coding is not like writing an essay. You can’t just put in 2 hours of work and say “wherever it is by the time I’m done, that’s what I’m turning in”. No. This either works or not, and it might take 1 hour or 7 (depending if you asked for help and/or planned before coding). The best way to deal with this is to start the day the assignment is issued and then come back to it early and often until it is out of the way.
- Don’t be affraid to make mistakes: Getting errors and warnings is not something to avoid. THAT IS THE WHOLE CLASS: how to plan around them before they hapen AND solve them WHEN they do. The in class exercises and office hours are for getting things wrong and learning from them. Even the homework and quizzes are designed such that you can learn fromm your mistakes and not be too scared about losing points. Try things out and deal with any errors calmly.
- Students tend to say they learned a lot (despite the amount of work), that they liked the class, and to go see me and ask questions because I am not scary… but I’ll leave that to your own judgement.
Q & A
- Q: When are the instructor’s office hours?
- A: TBD (we’ll define them using a poll and set 2 x 1-hour sessions; in addition, we can always meet over zoom with prior arangement or discuss over Slack).
- Q: Where are office hours?
- A: Ford Hall, Third Floor, Chemistry side, to the end: Office #316. Also, we might book the classroom.
- Q: What can I do if I am not free during office hours?
- A: we can set up an appointment to meet over zoom (usually 10 min). Also, there will be TA help available (TBD).
- Q: When are the TA’s office hours?
- A: TBD.
- Q: Can I submit Homework Assignments late?
- A: Only with prior permission (Slack) given an explanation or because of emergency (e.g. health); HWs build on each other so the maximum extension is 4 days.
- Q: Can I complete a quiz late?
- A: Only with prior permission (Slack) given an explanation or because of emergency (e.g. health); Quizzes are used for attendance AND formative assessments so you only get 1 free late attempt.
- Q: Can I do the reading exercises late?
- A: No (because they are needed before the lecture). Remember, they are optional.
- Q: Will you record classes?
- A: No.
- Q: Can I “attend” classes over Zoom?
- A: Only due to health reasons and with previous permission from the instructor. In addition, the instroctor will not manage the zoom call so you need to get a classmate to: 1) sit in front, and 2) manage the zoom call and your questions. I can lend that person a webcam for easy setup.
- Q: How is this class graded?
- A: The format is S/U (Satisfactory/unsatisfactory) but run as a traditionally graded course so that you get an S (Satisfactory) if you get a 70% or higher during the course and U (Unsatisfactory) otherwise. See details in the Syllabus.
- Q: Do I need a laptop?
- A: Yes; Mac or PC is ok (tablets like ipads and Chromebooks are too weak).
- Q: Do I need a to know some coding beforehand?
- A: No.
- Q: What do I need to get started?
- A: Access to the website, access to moodle for the course, access to the Slack workspace for the course.
- Q: What do I do if I am not officially registered (I don’t have Moodle)?
- A: The course has a cap, and only if students leave will I let other students in. I will pick students based on the waitlist with no preference given to anyone.
Acknowledgement
Some of the materials used in this course and this syllabus are derived from previous offerings of this and other courses at Smith College, as well as similar courses taught at other institutions. Appropriate references will be included on all such material.
Table of contents
- CSC110calendar-Fall
- Installing WSL
- Install_Python_and_IDE
- CSC110GithHub-class
- CSC110cheatSheet
- CSC110-Q&A
- History
- Data
- Lecture00
- Lecture01
- Lecture02
- Lecture03
- Lecture04
- Lecture05
- Lecture05b
- Lecture06
- Lecture07
- Lecture08
- Lecture09
- Lecture10
- Lecture11
- Lecture12
- Lecture13
- Lecture13b
- Lecture14
- Lecture15
- Lecture16
- Lecture17
- Lecture18
- Lecture19
- Lecture20
- Lecture21
- Lecture22
- Lecture23
- Lecture24
- Lecture25
- Lecture26
- Lecture27