Welcome to CS 101
CS 101 is a bit of a strange duck as far as courses go. I jocosely call it a “negotiated truce among departments,” because of how many different units rely on what CS 101 covers. We are focused on giving you a toolkit for solving scientific and engineering problems. This means we won’t cover game development, much of software development more generally, systems languages, binary mathematics, or a lot of the other things you would encounter if you took a CS major or minor. That’s okay—I’m assuming you’re here because you need these skills, but not because you want a career as a computer scientist or software developer. (After all, if you did, you’d be in CS 125.)
There are some quirks in the course, like how Python and MATLAB are both covered even though they are fairly similar languages. For the most part, though, CS 101 has achieved a fairly stable curriculum appropriate to our diverse audience.
Who I Am
I, like most of you, am not a programmer by training. It turned out for me that my largely self-taught skills in computer programming were one of the most valuable elements of my own training as an engineer, though, and I remain excited to teach new engineers the opportunities that open up when one masters a relatively basic toolkit.
I studied chemical engineering at Brigham Young University, then came here in 2008 to study nuclear engineering with Rizwan Uddin of NPRE. My research focused on modeling uranium surface chemistry and electronic structure, including some time at Westinghouse’s nuclear division and Los Alamos. After I finished my degree, I worked on training engineers to use modeling software with Computational Science and Engineering, and eventually joined the Computer Science department.
I have taught CS 101 since 2015, and this is my twelfth time teaching the course. Every semester has been different, and I enjoy the challenges as well as getting to know you. (You may not believe it, but even in a class this large, there is always a different and unique collective personality present.)
I’m happy to talk about career planning, studies, nuclear science, technology policy, or a whole lot of other things, and you’ll be able to schedule time to meet with me during the semester if you’d like to.
About the Course
CS 101 is not a weeder class. It’s designed and intended that if you do the work, you’ll get the grade: no gotchas or disproportionate grading schemes. To that end, we have distributed the available points in the class such that they sum to 100 points and that they are available from many different sources: lesson completion, homework, labs, and projects.
We as course staff learned a lot from our first nose-to-tail online semester. We have reconfigured things a fair bit as a result, which means that we’ve hopefully fixed some rough patches but doubtless introduced new ones. Bear with us: we’re really trying to balance three objectives which are somewhat in competition with each other:
- Teach you the course objectives
- Give you a reasonably pleasant online experience and workload
- Help you develop a working framework for approaching computing more generally
Taking online exams, despite the best efforts of our proctoring service, is invasive and awkward, and I really didn’t like it any more than any of my students did. As a result, this semester we are jettisoning exams (“quizzes”) in favor of a couple of team projects. We anticipate that there will be some friction in getting teams working smoothly, but we’re willing to work with you in good faith.
The last objective I just highlighted emphasizes that as a freshman course, I also want to encourage you to critically think and create systems of thought and research. If all you come away from this course knowing how to do is write a short program, you may get an A, but you and I will have failed in a deeper sense, or at least missed an opportunity. Computing, like it or not, is here to stay, and it will only grow in influence on your profession and career trajectory. Mastering the elements of computing and understanding how to marshal them to your own ends will only become more critical year over year.
How You Should Approach the Course
You need to keep track of a few things:
- Lessons become available on the day they are assigned and are due on the Wednesday of the next week generally. There are associated videos, but all of this may be done on your own time. I recommend setting aside an hour or so on Monday and Wednesday to complete these.
- Homework are due on Wednesdays. (Note that my due time is always 10 p.m. Central Time, which changes partway through the semester.)
- Labs are held synchronously using voice and video chat with your teaching assistant. These are due at the end of your assigned lab time.
- Projects will be guided and have milestones throughout the semester, with due dates to be announced later.
We drop the lowest grades in some categories in order to accommodate illness, travel, or otherwise unnecessary absence. (We don’t track absences, although you can arrange make-up labs as needed with a doctor’s note or other appropriate documentation.) Don’t think of these as free passes: hang onto them for when they are absolutely necessary.
We’ll have the semester to get to know each other better, and I hope that you find the course useful and challenging (in the best way!).
A Last Word Before We Begin
Among other things, my single biggest personal goal for you is to wonder as a result of what you see in this course.
Right now you probably think of a program as a bit of code that you write on a computer. You’re wrong: a program is any process that takes place, whether or not we can write it down in Python or C. DNA, the flight of a bird, the fall of a stone, the involutions of a flower: all of these things are programs that arise as the result of what we (in this context) call computations. (Some of you are sputtering: “but that’s math!” or “but that’s physics!”. That’s my point: these are all the same thing at bottom.)
It should blow your mind every single day that we can write down symbols on paper or a screen and use them to predict the future and describe the past. Unerringly. Computation, mathematics, physics, chemistry, biology, all of these things: these are wonderful and should fill you with wonder.
Go outside today and walk or sit. Just watch things happen and think about what it takes for any of those events to happen: what a wonderful cascade of probability and process leads to raindrops and the texture of brick and the smell of air.