About the Course/Instructor

CSC 161 - Imperative Problem Solving - Weinman

I will post answers to questions B.10 and C.11 from the questionnaire assignment here as I receive your submissions.

1  About the Course

Q:
Are we expected to do all of our work on the Noyce computers?
A:
While you are welcome to create your own C development environment (i.e., on a personal computing device), I won't generally be able to provide support for you to do so. macOS comes with LLVM/clang (which we will use for the course). Any Linux distribution should make it easy to install/use clang locally. The internets supposedly say LLVM/clang is available for Windows (https://clang.llvm.org/get_started.html#buildWindows) but I have absolutely no experience with that.
Alternatively, you may connect to a MathLAN machine remotely via your web browser through https://remote.cs.grinnell.edu. This won't allow you to do robot based work, however. For that, you and your partner will almost certainly need to huddle in Noyce 3.
Q:
Is it permissible to discuss a completed, fully turned in homework or project submission with others? As in, if I have already submitted a homework, can I then discuss my solution with a friend who took the class in a previous year, or would that be in violation of the academic honesty policy?
A:
To avoid confusion about all sorts of potentially unusual special cases I can think of, let's say that an assignment can become fair game for broader discussion (beyond the instructor) once it has been graded and grades released.
Q:
Are the projects going to be finished in class in one day or over a period of time after the module?
A:
Although the time varies with the project, you'll generally have several days to complete and submit each end-of-module project.
Q:
Often when I end a command with & , the terminal outputs something like 1] 86710 . What does this mean?
A:
The [1] is the backgrounded job number (you can background many jobs, and it's helpful to be able to refer to them specifically if you want to terminate one or bring it back to the foreground.) The second number is the "process ID". Essentially each running program is called a process, and the operating system needs a way to refer to it globally. (The terminal's background job number is valid locally only within that terminal window for a short time. PIDs, as they are called, can get very big and only wrap around infrequently, so they are more-or-less unique.
Q:
How precise can the scribbler robots be? I remember interacting with a similar robot and struggling to make polygons that close with the pen, even though my math should have been right.
A:
Would you believe I have never actually used them for drawing?! But if their sensor accuracy is any indicator, I'm guessing the actuator precision is also fairly low. These are educational robots, after all. However, if you need a fresh one for a project (not one that has been banging around the CS lab for over a decade), we have some "new" ones still crisply in their original boxes.
Q:
How often will we not be able to complete labs in class?
A:
This is a great and super important question. It is likely that all of the labs are longer than the allotted class time. So it's normal not to complete them. What you do with the uncompleted part is up to you, as it's really about how comfortable you feel with the day's topics.
Q:
How easy is C to pick up?
A:
As with most (interesting) things, the most accurate answer is, "it's complicated." Doing super basic programming things is fairly straightforward, though C is not a high powered language that does a lot for you the way some more modern languages do. However, it is a systems-level language that allows you to control a lot of things in a way that those modern language do not. As a result, if you want to learn to control those things (which we will do a fair bit of), there's a lot to master, and we'll spend the semester trying to get a good handle on many of them.
Q:
I am confused on the testing documentation process. Would you be able to explain a little more about the generated transcript and what we should write in our testing file?
A:
Your test file should document the range of scenarios (e.g., input values) that can occur, and then document (as specifically as possible) test circumstances that cover those cases, as well as the expected outcome. The transcript is just a recording of your program compiling and demonstrating that tests of the sort described in your file have been run (and hopefully produce the expected output/result).
Q:
What does the start of class normally look like? I prefer a nice mental warm-up and a quick rundown of what is due in the near future + what the goal of class will be that day.
A:
Administrative notes (upcoming events, talks, mentor sessions, homework deadline reminders). Then clicker questions after perhaps briefly setting the context for the day. There are exceptions to this general format but it's common.
Q:
How will we work on homework assignments? Such as, will we have to be in the room using Grinnell's computers, and if so, how can we avoid people seeing answers if we are in the same room?
A:
You certainly may code in any of the classrooms on Noyce 3. It's a common enough situation that "student working at console" is not a concern we have. (Hopefully no one will be peering over shoulders!) However, you will want to be sure you don't leave your console unlocked with your code up on it. (Or maybe don't set your font size to 44 pt.) :)
Individual homework assignments can also be completed via the "remote" MathLAN (https://remote.cs.grinnell.edu. (The robots won't work remotely.)
Q:
What do you think is key to not only doing well in this course, but generally in learning a new programming language?
A:
I posted previous students' tips for this question on the main page and I largely think they have it. In sum, start early, revise, and build good habits (both study and programming). To learn a new language, I myself usually have a problem I need to solve. I don't get it right or elegantly the first time, so revisions are usually needed. But the main thing is to try and do, not just read or copy/paste. To get it into our brains we must understand and adapt.
Q:
Will the more detailed topics for the quizzes be announced?
A:
Not in particular. Each module quiz covers the topics introduced during that module.
(Though note that language learning is cumulative. For example, once you know how to write if statements (conditionals), it would be expected that usage of these might continue to occur, not that we would be assessing for them directly.)

2  About Me

Q:
Which module is your favorite to teach to students?
A:
Ooh, no one's asked that specific question before. Perhaps Module 100 because we get to use images, which can be fun data objects to manipulate. (Learning the mathematics of image processing got me started as a computer vision researcher 25 years ago.)
Q:
What was your sabbatical like?
A:
Wonderful! I (re)joined a research group there with interests closely aligned to my own, started a project, answered some research questions, published a couple of papers. And ate lots of delicious local food. While I had an office at the local university, I also chose to work regularly in municipal libraries all over the city, because each has its own feel. They are beautiful little ecosystems. (Also, not having to pay close attention to my calendar was really nice.)
Q:
You asked me in class what I plan to read this semester, so I am curious to hear what book(s) you plan to read. Or just what kind of books you like.
A:
I like a variety of books, but I stick mostly to fiction, as I get enough non-fiction in my work life. Whether it's more "literary" (usually modern), or the occasional thriller mystery, I generally read for pleasure. I like books that take me to another time, place, culture, broadening my horizons (e.g., Amitav Ghosh, Olga Tokarczuk). One of my favorite authors is Paul Auster. From the Grinnell community library this weekend I just checked out Martyr! (Kaveh Akbar), The Bee Sting (Paul Murray), and Touched (Walter Mosely).