Introduction to Programming and Computation (Fall 2021)
== PRACTICE FINAL AVAILABLE HERE==
== PRACTICE FINAL SOLUTIONS AVAILABLE HERE==
== ADDITIONAL PRACTICE QUESTIONS AVAILABLE HERE==
== SOLUTIONS TO ADDITIONAL PRACTICE QUESTIONS AVAILABLE HERE ==
==PRACTICE EXAM 1 AVAILABLE HERE==
==PRACTICE EXAM 1 SOLUTIONS AVAILABLE HERE==
==EXAM 1 SOLUTIONS AVAILABLE HERE==
==EXAM 2 SOLUTIONS AVAILABLE HERE==
Introduction to Programming and Computation
INFO 206A
UC Berkeley
Fall 2021
Meets 2:00 PM to 4:00 PM Mondays and Wednesdays in Cory 277
Instructor: Ben Allen
Course staff:
- Chia-Yi (Joy) Chu (chiayi.chu@berkeley.edu)
- Jackie Hu (jackiehu@berkeley.edu)
- Junyi Cheng (junyi-cheng@berkeley.edu)
Ben's office hours: 2:00 - 4:00 Friday, in South Hall 205
T.A. office hours:
- Mon. (2hrs) - 11:00-12:00 (Jackie in person) & 17:00-18:00 (Joy zoom)
- Tue. (3hrs) in person - 14:00-15:00 (Junyi) & 15:00-16:00 (Joy) & 16:00-17:00 (Jackie)
- Wed. (2hrs) - 11:00-12:00 (Jackie in person) & 17:00-18:00 (Joy zoom)
- Thurs. (1hrs) - 14:30-15:30 (Junyi in person)
- Fri. (1hrs) - 13:00-14:00 (Junyi zoom)
T.A. office hour locations:
- In person: South Hall 110
- Zoom: https://berkeley.zoom.us/j/98651912806?pwd=UVNRS2k4VlBiMEExQXlCbWhPT1ZhQT09 (Links to an external site.) (Meeting ID: 986 5191 2806; Passcode: 898297)
Methods of communication:
I can be reached via email at benallen@berkeley.edu
I have created a class Discord server and will be sending out an invite via announcement on bCourses at the start of the semester. This is a great place to ask questions about assignments and to collaborate and socialize with your classmates. In addition to my in-person office hours, I will be present on the Discord from 9:00 AM to 1:00 PM on Fridays, plus sporadically during other parts of the week.
Discord can be downloaded here
Description
This course introduces the basics of computer programming that are essential for those interested in computer science, data science, and information management. Students will write their own interactive programs (in Python) to analyze data, process text, manipulate images, and simulate physical systems. Problem decomposition, program efficiency, and good programming style are emphasized throughout the course.
Prerequisite
None
Software
All course assignments will be done in Python using Jupyter Notebooks. To get started, download Python 3 and Jupyter Notebook on your computer. The Jupyter Notebook site gives two methods of installation; I’ve found it easiest to follow the instructions for using pip rather than the instructions for using conda.
Please also use pip to install the following Python libraries: drawSvg, matplotlib, numpy.
Grading
Your final grade will be determined from nine assignments (50%) and two exams (50%). All assignments are weighted equally as are the two exams.
Late policy
Please do not turn in assignments late. That said, here's my policy:
1) Assignments turned in on the due date get a %2 on-time bonus
2) Assignments turned in no more than a day after the due date get full credit
3) Assignments turned in more than a day after the due date get a %20 penalty
4) I will not accept assignments turned in more than a week late.
Extensions policy
That said: I am quick to give extensions when you ask well in advance. It is understandable that circumstances might be such that you simply don't have time to finish projects by the due date -- and we're in a global pandemic, so there's a lot of those circumstances going around.
Therefore: if you can foresee that you won't have time to finish an assignment on-time, please email me in advance and we can work something out. I will ignore and/or quietly laugh at requests for extensions made the day the assignment is due.
Academic Integrity
All work that you submit must be your own. You may not download, copy, or reproduce, in any way, code or solutions that you find on-line or from a fellow or former student. Submitting any work that is not entirely your own is a violation of Academic Integrity. You will generate and submit sample output of your code. Altering this output in any way to be inconsistent with your code is a violation of Academic Integrity. During exams, you may not access any written or on-line information not explicitly specified in the exam instructions, and you may not discuss the contents of the exam with anyone else. You may not publish or post any of your assignments, exams, or course solutions onto any publicly accessible websites.
Violations of Academic Integrity will be taken very seriously. Independent of any University-level consequences that may result from a violation of this code, violations may lead to a failing grade in the class.
Inclusion
We are committed to creating a learning environment that is welcoming, inclusive, equitable, and respectful, and that allows all students to bring their full selves to the classroom. As participants in this class, we have an obligation to include and respect our fellow participants.
Accommodations for Students with Disabilities
The purpose of academic accommodations is to ensure that all students have a fair chance at academic success. Disability, or hardships such as basic needs insecurity, uncertain documentation and immigration status, medical and mental health concerns, pregnancy and parenting, significant familial distress, and experiencing sexual violence or harassment, can affect a student’s ability to satisfy particular course requirements. Students have the right to reasonable academic accommodations, without having to disclose personal information to instructors. For more information about accommodations, scheduling conflicts related to religious creed or extracurricular activities, please see the Academic Accommodations hub website.
If you need support, I’m glad to help you find the right campus resources that can help. You never need to disclose personal information to me.
Pandemic planning
As of the time of the writing of this syllabus, all sessions of this class will be held in person on campus. It is unknown whether holding face-to-face classes will remains safe for the entire semester. Should it become unsafe to hold face-to-face classes, we will switch over to the following online format:
- You will watch pre-recorded lecture videos on the day’s topic on your own time
- Class session will consist of question and answer sessions, group exercises, and individual office hours.
Schedule (subject to minor change)
- We [08/25] Coding basics
- Welcome to class
- What is an algorithm?
- Hello world
- Mo [08/30] Variables, data types, expressions, operators
- variables
- expressions
- assignment
- strings & booleans
- We [09/01] Control flow
- while loops
- logical operators
- conditionals
- Mo [09/06] HOLIDAY
- We [09/08] For-loops and lists
- lists
- lists & loops
- nested loops
- modifying lists
- Mo [09/13] Function, file I/O, Basic data visualization
- passing and returning parameters
- local & global variables
- file I/O
- data visualization
- We [09/15] FIRST EXAM
- Mo [09/20] Recursion
- Base cases and recursive cases
- Towers of Hanoi
- We [09/22] Object-oriented programming (1/3)
- Abstract data types
- Constructors
- Accessors and mutators
- Mo [09/27] Object-oriented programming (2/3)
- Object-oriented example: face class
- Composition
- We [09/29] Object-oriented programming (3/3)
- Conway’s Game of Life
- Mo [10/04] Binary numbers and Boolean logic
- binary numbers
- two's complement
- decoding
- Boolean logic
- transistors and gates
- We [10/06] Transistors, Gates, and Circuits
- designing circuits
- Adders
- Compare-for-equality circuits
- Karnaugh maps
- Mo [10/11] Review
- We [10/13] SECOND EXAM
Course Summary:
| Date | Details | Due |
|---|---|---|