Functional Problem Solving (CSC 151 2014F) : Handouts

Lessons from ...


In assignment 1, students were asked to provide two things they learned by reading the course web and two things they learned from the first day of class. This document summarizes their answers. I have chosen not to credit individual students by name or initials. Credit for the compound document therefore belongs to the Students of CSC 151.01 2014F.

Note: Followups from SamR appear in italics.

Lessons from the the course web

I learned reading the daily material will be vital to the learning process.

I discovered where to find the assignments for upcoming classes.

Much of the work we will be doing must be done in a CS Lab, so we should be proactive about starting early and leaving time to spend time at those computers. [I will provide you with a mechanism for doing work on your own computers. But you're still better off working in the lab because help is readily available.]

Always cite the resources you use. [I would hope you learned that in your tutorial. But not all of you have been through tutorial. And, as at least one of you noted, code may feel different.] [x4]

We should cite borrowed code in as much detail as possible and note when the page was last updated and when we visited it. [I prefer detailed citations, but I'll take "quick and dirty" citations if such citations make you more likely to cite.]

I also learned how to better cite things used in computer science. I would have assumed that recording the URL was sufficient for most purposes. [It depends on how you think about sources. If you're citing just for academic honesty purposes, a URL should suffice. However, if you want to trace the evolution of ideas, more care is necessary.]

Expect to spend around eight to ten hours working on assignments for this particular class. [That should be total outside-of-class work, including reading and studying for the quizzes.]

Choose subject lines wisely: use "CSC 151 Assignment: Title (Your Names)" when turning in homework, and use the keyword "question" or "help" when asking for help.

Time efficiency in this course is a must; otherwise the work may feel very stressful. [Isn't that true of all Grinnell classes? I've heard from some students that the regular pace in 151 is better than what they see as uneven pace in other classes.]

Reading is going to be very important in the class. Stay on top of the assigned readings and get ahead if possible. [Getting ahead may not be a good idea. Each reading builds on the previous one.]

Prof. Rebelsky cares about the well-being of his students and has put policies in place to support that well-being. [x2]

I will need to work hard in order to achieve an A.

This part of the assignment gave me a better understanding of what is expected of me in the class (i.e. legitimate effort, rather than simple results). [I care about both effort and results. But I think you deserve a lot of credit for effort even if you do not achieve all the results we'd hope for.]

I learned that you are very thorough (pushing on wordy). [Yup. I need a good editor.]

It's a strange concept at first, but code is created through ideas, and is the intellectual property of whoever wrote it. By not citing code, it's exactly like copy and pasting a paragraph into your essay.

Programming isn't necessarily more effective done solo. With more minds, code can seen with different lenses and modifications can be made more effectively.

One thing I've learned in this part of the course is that I can eat snacks during class while keeping them away from the computers.

I learned the name of the language we're going to be starting with (Scheme).

I learned about the SQ3R method when reading, which I consider really important and helpful. (I probably should have done it for the course materials, too.) [x4]

This course is not only about CS. It will help me to develop problem–solving skills, thinking skills, and even discussion skills.

I learned that we are occasionally allowed to substitute an assignment for another one which we did poorly on, as well as dropping one assignment grade.

I learned that your exams are primarily given to check on our mastery of the concepts rather than facts, which is why most examinations are take-home.

I've learned and appreciate that you are very transparent with your expectations of your students.

I learned what PGP is and how I can protect myself from email forgery and NSA snooping (email-wise at least). [x3]

I learned I'll need to format and style my code correctly in order to receive full credit on an assignment.

I leaned that I should do the readings in advance. [Good advice for almost every class.]

I learned that I should begin my assignments early. [Good advice for almost every class.]

I learned that Sam does in fact care about his students’ opinions. I learned this specifically from question 9. Sam is willing to change the policies of his class if the student has a reasonable concern.

I also learned that you can use a program to sort emails depending on titles.

I learned that "first-year" is the preferred term because "freshman" mentions "man" and is thus somewhat sexist.

I learned that a rigid documentation system is not required as long as your comments are descriptive, concise, and relevant. [Well ... I actually have fairly rigid documentation requirements for this course because you are just learning to document code, and I find that careful requirements are useful.]

There's a Google calendar for the course.

I learned that the due date time of 10:30 is so we can get a decent amount of sleep which is really great because I like sleep.

Attending class is very important. Missing class is not only harmful to oneself, but will also go very noticed, and even punished. [I'm not sure that "punished" is the right word, but attendance is part of your grade. See the next comment for an alternative way to think about this]

I learned that showing up every day and being an active learner will reward me.

I learned that I have a variety of resources to receive help, if needed.

When one knows that a class is going to go missed, one must inform Sam with an email by 5 PM of that day at the very latest. [I do know that there are extenuating circumstances.]

That homework is graded on if you know the general picture. [I'm not sure I'd phrase it quite that way, but okay.] [2x]

The excused absence policy.

I learned how to navigate the website. [x2]

I learned how you will be running class.

A lot of work is going to be group work.

Collaboration is an important skill in CS and elsewhere.

Good work will only get a B.

I learned that it is important to relay to you when I have a question right away rather than wait until the last minute.

I've also noted that it is important to have a good subject line in an email so there is no confusion.

I also learned that it’s important to keep chocolate on hand. [Hmmm. I'm not sure how that came about, but okay.]

I can get extra credit for extra work.

You are open to help at almost any time and for almost anything (or should I say – for anything) ["Almost anything" is right.]

Your grading policies are a little unusual, I think it’s important that I learned about them now.

The eboard seems like it will be a useful resource.

Participation does not refer to not just the quantity of comments and questions, but the quality of participation, meaning that shallow answers and simple questions do not carry much weight.

We are encouraged to speak up immediately during class if we are confused as we do not want to waste class time.

Lessons from the first day of class

Computers take everything literally, so it is best to be as specific as possible (e.g., make sure to say which end of the knife to grab). [x14]

Order of operations is important.

We will find it useful to revise algorithms after we try them out.

It is also crucial that I assume that the computer does not know anything.

I learned that detailed instructions are a necessity in the art of computer science.

It is difficult to program computers to open twist ties.

I learned that I should think about how to handle errors correctly (so, in the PB&J example, you wouldn't be told to scoop peanut butter out of the jar if you had failed to take the cap off of the jar).

I learned that programming might not be as scary as I think it will be, because I'm good at being specific and attending to details.

I learned that I should be proactive in starting assignments because there is a lot of trial and error and "working out the kinks" in CS.

Professor Rebelsky really emphasizes active participation meaning that everyone should be able to talk at least once. Students are often called-on in class either randomly, in a predictable order, or individually by volunteers [I prefer "Sam" to "Professor Rebelsky"]

This class will be challenging, but whether a student accepts the challenge or falls in despair depends on the person.

Computers can be very useful if used properly. As long as you are extremely specific with your instructions, you can get a computer to do almost anything.

Given the amount of students in the class, one-on-one time with Prof. Rebelsky is going to be hard to come by in class. Make use of the office hours. [There will be quick bursts of one-on-one time during labs. You can also make use of email. (I spend way too much time responding to email, but I think it's a worthwhile use of my time.)]

I learned that this class is going to teach me a lot about algorithms

I learned that I need to be pretty careful when I'm writing code (as evidenced by the peanut butter and jelly sandwich).

Computers are pretty empty headed without instructions.

Never assume anything. [Wow. That's a bit extreme.]

I learned to tackle one thing at a time instead of jumping around. [I actually think there can be some value to jumping around a bit, particularly if you're stuck on something. If you can't figure out how to describe how to open the bread, move on to opening the no-nut butter.]

I learned what computer science involves in general from the "What is CS" section of the class.

I learned that I didn't quite understand Sam's definition of CS.

I learned that we gain more knowledge and write better algorithms through collaboration with others because of the different views we have.

Before the class, I did not perceive computer science as a science (such as physics or chemistry). I learned how experimental practices in computer science make it similar to the other sciences.

I learned that computer science can be taught through sandwiches!

We should not make assumptions when we give computers instructions.

It's ok to laugh when things go wrong, which they will.

I should participate in class discussions.

I learned that there are fun ways of teaching rather simple concepts and ideas (no-nut butter and jelly analogy.)

I also learned that you can’t be lazy with computer programs. There are no shortcuts. (only desktop icons) [Funny]

We're all clearly at different levels and that’s ok. [An interesting way to put in two things.]

I learned that we can get extra credit for attending our peers' matches/games/meets/events. [x2]

What my co-students look like.

The names of my fellow students.

What I sound like, when I stand-up to speak in front of them.

That you teach in a different mannerism than most professors.

You have unusual teaching methods – interactive, funny and efficient.

I also learned we will be working with partners on most tasks.