Software Development (CSC 321 2016S) : Handouts
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] [FAQ] [Teaching & Learning]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Outlines]
Reference: [Slack] [Ruby@CodeCademy]
Related Courses: [Rails Tutorial] [CSC 321 2016S @ EdX] [CSC 321 2015S (Davis)] [CSC 321 2015F (Rebelsky)] [CSC 322 2016S (Rebelsky)]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker]
I like to begin each course with a meta-commentary on teaching and learning. Why? Because I care about the learning process, because I seem to have a different teaching style and personality than some students expect, and because I want you to think not just about what you are learning, but also how you are learning.
From my perspective, you are here to learn and I am here to support that learning. What will you be learning? Clearly, you will learn the subject matter of the course. However, I expect that (or hope that) you will also discover new ways to think and learn or will sharpen existing skills. For example, in most of my courses I hope that you will develop your skills and working with other people and your ability to “think on your feet”. In terms of subject matter, I tend to care more about the processes and concepts that you learn than about the “basic facts”.
Learning is an interactive process. You learn by asking, discussing, and answering questions, by playing with ideas (in computer science, you also learn by playing with programs), and by working with others. I know from experience that computer science cannot be learned passively: you need to experiment with ideas (in your head, on paper, and on the computer) in order to fully grasp these ideas.
How do I try to support this learning? In a number of ways.
I assign readings to give you a basis for understanding the subject matter. Sometimes these readings will be from the textbook, sometimes I will distribute appropriate supplements.
I lecture, lead discussions, and conduct recitations on the topics of the course. Sometimes these will be based on readings and assignments, sometimes they will vary significantly from your readings. Why? Because I feel it wastes your time and mine to simply reiterate the readings. If you let me know that you're confused about a reading, I will spend time going over that reading (either in person or in class).
To stimulate discussion and thinking, I regularly call on students in class. I know that not all of you are comfortable answering questions publicly, but I strongly believe that you need to try. Please feel free to say “I'm not sure” when I call on you. At times, I'll step through the class in a predictable order, asking a question of each student in turn. At others, I'll call on you individually. I tend to call more on students I interact with regularly.
I assign work because I find that most people learn by grounding concepts in particular exercises that allow them to better explore the details and implications of those concepts. I expect you to turn in work on the day it is due and will impose severe penalties on late assignments (including refusing to accept some late assignments).
Some of my assignments may involve public presentation of your work. Sometimes, the best way to learn a topic is to have to discuss it or present it to someone else. In addition, I've found that many students need some work on their presentation skills. Most often, presentations will be of papers that you've read.
In general, I expect you to spend about eight to ten hours per week on this class outside of class time. If you find that you are spending more than that, let me know and I'll try to reduce the workload or help you use your time better. If you find that you are spending significantly less than that, please come chat with me, too. I won't give you more work (unless you want more work), but it may be that you are missing some key issues.
I grade assignments to help you identify some areas for improvement. Note that I believe that you learn more from doing an assignment than from receiving a grade on that assignment. This means that you may not receive a grade or comments on all or even a majority of your assignments. I will do my best to tell you when an assignment won't be graded, but not until after you hand it in. I will do my best to be prompt about returning grades on assignments. At times, I will use a grader to help speed the process.
I give examinations because I find that many students only attempt to master a concept when preparing for an exam. Because I care more about processes and concepts than about facts, I almost always give open-book examinations. Because I do not feel that time limits are helpful, I tend to only give take-home exams.
I give quizzes to ensure that you are doing the reading and that you are understanding what I expect you to understand from the readings and assignments. At times, I will give quizzes to help illustrate a particular point.
I build course webs to organize my thoughts, to give you a resource for learning, and to help those of you who need to work on your note-taking skills. I do my best to make my notes for each lecture available on the Web, in outline format. In general, these notes will be available approximately five minutes before class. Warning: these are rough notes of what I expect to talk about; the actual class may not follow the notes. I also do my best to provide an electronic record of portions of course. I call this electronic record the “EBoard”.
I make myself available to discuss problems and questions because I know that some of you will need personal attention. In general, if I'm in my office you should feel free to stop in. Most of the time, I'll be willing to help. Once in a while, I'll be working on a project and will ask you to come back later. Students always have first priority during office hours. You should also feel free to use IRC, to send me electronic mail, which I read regularly, and to call me.
At times, I survey my students to better understand how the class is going. Because I do research on the effects of computers on learning, I sometimes give surveys to gather data. If I plan to use my surveys for research purposes, I clear my work with the College's Institutional Review Board (IRB).
At the same time that you learn and I try to help you learn, Grinnell and the larger community expect me to assign a grade to your work in the class. I base grades on a number of components, but primarily on assignments, examinations, and involvement in classroom discussions.
Because I understand that not everyone gets everything right the first time, I will occasionally allow you to substitute an extra assignment for one that you did poorly on. I will also drop one assignment grade. Unfortunately, the time pressures of the semester are significant enough that I will not be able to permit you to make up assignments except through these mechanisms.
In computer science, it is often possible to do the same problem in multiple ways. Hence, I typically reserve class days to discuss particularly significant assignments. We may also take time from some class periods to discuss particulars of assignments.
I will admit to a fairly strict grading scale. Grinnell notes that A and A- represent exceptional work. To me, “exceptional” means going beyond solid, acceptable, correct work. Exceptional work entails doing more than is assigned or doing what is assigned particularly elegantly. Work limited to mastery of the core materials is B-level work (or check-level work, if I'm using a plus/check/minus grading scheme). To help you demonstrate exceptional understanding, I will occasionally suggest extra credit work (although truly exceptional students will often suggest such work on their own).
To help eliminate biases, I typically use a numerical grading scale. 94-100 is an A, 90-93 is an A-, 87-89 is a B+, 84-86 is a B, and so on and so forth.
How should you participate as a member of my class? (Or, how do you do well in my class?) By being an active participant in your own learning. In part, this means doing all the work for the class. It also means a number of other things.
Do the readings in advance of each class period and come prepared with a list of things that you don't understand. I will try to spend time at the beginning of each class session answering these questions or will restructure the lecture to accommodate them. Further notes on reading appear later in this document.
Come talk to me when you have questions or comments about subject matter, work load, or how the course is going in general. If you don't feel comfortable critiquing me directly, feel free to express concerns to the class mentor or one of the tutors, who will relay them anonymously.
Ask and answer questions and make comments during class periods. I consider active participation during class a particularly important part of the learning process.
Begin your assignments early. Students who begin assignments early have more opportunities to ask for help, to make sure that the assignment gets completed, and to sleep at night. Such students also do better in general.
My colleague Janet Davis suggests that you use the SQ3R method when reading. I've paraphrased her description of the SQ3R steps, as I believe she paraphrased the information from elsewhere.
I seem to have a different “lecturing” style than some students expect. As I mentioned earlier, I don't think it is the purpose of lecture to reiterate the readings. I do, however, think lecture and readings can provide alternate perspectives on the subject matter. At times, I will also discuss issues not covered in any readings.
` I see no point in going on with a lecture or example if many students don't understand what's going on. You are the first line of defense against wasted class time: stop me when you are confused. In addition, I will occasionally stop the class and ask for a show of hands to see who is confused. Don't be embarrassed to raise your hand; if you are confused, it is likely that someone else is also confused. I realize that this show of hands leads to some “pressure for understanding”. However, you won't get much out of a class if you're confused (and therefore just copying down what I'm writing without thinking about it).
I deem it important for students to be active participants in lecture. This means that I will often ask you to help develop algorithms, solve problems, and even critique each other's answers. If I call on you and you're not sure of an answers, feel free to say “I don't know” or to venture a guess. I consider it very important for all of us to see the problem solving process, warts and all. Note that I often generate examples of discussion “on the fly” so that we can all be involved in the problem solving or development process.
While I teach courses in computer science, I hope that students in my courses leave with more than just more knowledge of CS. In particular, I expect students to have developed some problem-solving skills, some thinking skills, and even some discussion (or at least quick reaction to recitation questions) skills. I would hope you find the same in all Grinnell classes.
As the prior discussion suggests, I expect a great deal from my students. I also use many different strategies to get the best out of you. Feel free to discuss any of this with me (anything from concerns about this perspective to suggestions on improving teaching and learning).