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).