Well, here we are in March. From a Covid standpoint, things currently look... pretty good! Rates are ... well, at 12 cases per hundred thousand per day, we’re one of the worse counties in California, and well above the old "purple for panic" level of the early days of the pandemic. On the other hand, I’m assuming that those of us that are able to be vaccinated are now vaccinated.
My plan is to have class be entirely in-person. At the same time, I will definitely be wearing an N95 mask in indoor spaces until we get back down to a rate of ... 4? 3? Not sure. I would urge you to do the same, though Cal Poly is clearly no longer requiring it.
As always, my highest-level goal is to make the world a better place, and to make you happier, healthier, and better able to make the world a better place yourselves.
This is absolutely positively the first time this course has ever been taught (a) by me, and (b) in Python. It’s going to be absolutely nutty. Hopefully, it will also be a good learning experience, and help to prepare you for programming in your other courses here at Cal Poly and on into your career after school.
This course should do at least something to prepare you for programming, both in your major and in your future career.
You can design and/or choose a representation in Python for common forms of data,
manage data sources and inputs, enabling reproducibility, and
implement simple algorithms in Python, linking together existing libraries and functions to perform reliable computation.
Prereqs? I have literally no idea. Let’s find out.
John Clements, clements @ calpoly.edu
Austin Shin, amshin @ calpoly.edu
Section 04 (Shin):
Activity: 12:10–14:00, TR, room 14-255
Section 05 (Clements):
Activity: 13:10–15:00, MW, room 14-232B
See my home page for my calendar. You can add it to your calendar, if that makes your life easier.
Office hours also appear on this calendar; you may find them easier to see if you click on the "week" tab of the calendar.
This is the course web page, its link is https://www.brinckerhoff.org/clements/2224-csc231/.
I think that an interactive and lively classroom is a better learning environment. In particular, I will almost certainly learn everyone’s name, and I’m likely to notice if you’re missing. My experience is that if you come to class reliably, you’re extremely likely to pass the class—there’s a reason that we conduct classes face-to-face; it keeps you engaged, and ensures that you’re connected to the other students in the class.
In addition, I’m likely to call on you, in places during the lecture where I want to see if you’re following what’s going on. If you don’t know, it’s totally fine to say "no, I have no idea." In particular, this is probably evidence that I’m going too fast or not explaining things well. However, I try to respect the wishes of students for whom this technique is disruptive. Please let me know if you don’t want me to call on you.
Finally, my experience standing in front of classes and more especially my experience of sitting behind classes has convinced me that laptops are useful for note-taking in approximately 1% of cases. Essentially, never.
Indeed, there’s now a mountain of evidence indicating that laptops are distracting to students and to those around them, and that even when these distractions are eliminated, taking notes on laptops fails to create learning in effective ways. I’ll just cite this one paper, because it’s got copious references to other sources.
For this reason, I do not allow the use of laptops in class without special dispensation. If you need to use a laptop to take notes, please come and talk to me; otherwise, just put it away and take notes on paper.
You will be required to complete the assignments in this class using Google Colab, a free online environment for Python. Gosh, I hope it works out!
This does mean that you’ll need to have a Google account. You can always create a fresh one for this course....
For documentation on Python:
For documentation on NumPy:
This class will use EdStem. This will be the principal means that I’ll use to notify you of deadlines, organizational updates, and changes to assignments. If you’re not keeping up with the group, you’re going to be missing important information.
It’s also the best way for you to direct questions to me and/or the class. Feel free to e-mail me with personal questions, but use the EdStem group as your main means of communication. It’s possible to post anonymously, if you like.
You should already have received an invitation to the EdStem group; let me know if you need an invite.
Don’t post your code or test cases to the group; anything else is fair game.
Also, please keep in mind that I (and everyone else) judge you based in part on your written communication. Spelling, complete sentences, and evidence of forethought are important in all of your posts & e-mails. One easy rule of thumb: just read over what you’ve written before clicking post or send, and imagine others in the class reading it.
Oh my gosh... let’s talk about it.
Labs in this course take the form of simple exercises to be completed in a week during lab periods, designed to help you understand the lecture material and to lead you toward solutions for the larger assignments.
I’ll be checking these off during the lab; you’re responsible for demo-ing your lab solutions for me. Your marks on these labs will be simple credit/no-credit.
The labs will be due at the end of your lab period on the day specified, typically Friday. If we run out of time to check them, I will generally elect to accept them during the following lab session, but you cannot rely on this occurrence; the labs are due on the day specified on the schedule.
In labs, you are heartily encouraged to collaborate like crazy. Look at everyone else’s code, copy and paste, type on your neighbor’s keyboard, whatever. Labs need not be entirely your own work.
When you successfully demonstrate a lab, I will give you a number. You may enter these numbers at http://johnlewis.brinckerhoff.org:8026/servlets/standalone.rkt (also linked from the top of this page).
Grades will be determined by performance on the labs and the quizzes. I’m really not sure what the breakdown should be. Goodness. How about a tentative 50-50 split:
Quizzes : 50%
Labs : 50%