Syllabus

It goes against the grain of modern education to teach [students] to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical? -- Alan J. Perlis, Epigrams on Programming

Grading

You can see your grades on Carmen.

Quizzes & exams

There is no midterm, per se. The quizzes, collectively, are your midterm (so to speak). Quizzes occur every Wednesday; they are short (we still have lecture on Wednesdays, a quiz should only take at most 20 minutes), and are designed to reinforce the topics.

The final exam will look like several quizzes all in one test. So the format will be just like the quizzes. Obviously, the final exam is "cumulative" (covers everything we learn in the course).

Carmen quizzes

There are also required quizzes on Carmen. These are short and mostly test small details. You can take a Carmen quiz as many times as you'd like, any time you'd like.

Homeworks

Homeworks are always due on a Monday, by 11:00pm. Your homework should be sent to me by email: pawas.ranjan@gmail.com (attach your files; do not paste into Microsoft Word, just literally attach .cpp and .h files).

This material will be challenging. Consider the class like a math or physics class. It will require a lot of thinking, staring at the problem, planning a solution with pen & paper, etc. It's almost impossible to fake your way through it. There are always many ways to "solve" a programming problem, but there is an obvious difference between code that shows you understand your solution and code that shows you just tried every possibility. You will be graded higher if your solution is incomplete but intelligent, than if your solution is just a mess. Additionally, code that actually works (even if it's incomplete) is much better than code that has errors.

Most students say that programming assignments take longer than they expected. Trivial bugs in your code can cause you to waste hours attempting to fix your program. The last 10% of the work takes 90% of the time. And so on. So start early!

Hofstadter's Law "It always takes longer than you expect, even when you take into account Hofstadter's Law." -- Gödel, Escher, Bach: An eternal golden braid

Or if you prefer,

Murphy's law of Programming "The sooner you start coding your program, the longer it is going to take." -- The computer contradictionary

Text book

The book is not required, but you may find it highly useful. I generally follow the book's organization, and most homeworks are straight from the book. Probably any edition would be fine; I use the 7th edition.

Walter Savitch, Problem Solving with C++, 7th Edition

Academic misconduct policy

This course is designed for individual work.

The only work required of you outside of class is homework assignments and Carmen quizzes. Obviously, there is no tolerance for cheating (looking at others' work) during in-class quizzes, Carmen quizzes, or the final exam. However, you may participate in a reasonable amount of collaboration over homeworks. Collaboration is limited to: discussing how to approach the solution, or how to solve small coding problems; looking at the Internet for information about general topics, not solutions to the particulars of the homework assignment. It is considered academic misconduct if you copy significant portions of code from anyone (the Internet included). Your solutions should not bear an uncanny resemblance to anyone else's code. It should be clear to you what I mean by this; do not test the limits of this (fairly liberal) policy. Violators will be referred to the OSU Committee on Academic Misconduct (COAM).

Disability statement

Any student who feels he or she may need an accommodation based on the impact of a disability should contact me privately to discuss your specific needs. Please contact the Office for Disability Services at 614-292-3307 in room 150 Pomerene Hall to coordinate reasonable accommodations for students with documented disabilities.

Some inspiration

In my life as an architect, I find that the single thing which inhibits young professionals, new students most severely, is their acceptance of standards that are too low. If I ask a student whether her design is as good as Chartres, she often smiles tolerantly at me as if to say, "Of course not, that isn't what I am trying to do... I could never do that."

Then, I express my disagreement, and tell her: "That standard must be our standard. If you are going to be a builder, no other standard is worthwhile. That is what I expect of myself in my own buildings, and it is what I expect of my students." Gradually, I show the students that they have a right to ask this of themselves, and must ask this of themselves. Once that level of standard is in their minds, they will be able to figure out, for themselves, how to do better, how to make something that is as profound as that.

Two things emanate from this changed standard. First, the work becomes more fun. It is deeper, it never gets tiresome or boring, because one can never really attain this standard. One's work becomes a lifelong work, and one keeps trying and trying. So it becomes very fulfilling, to live in the light of a goal like this.

But secondly, it does change what people are trying to do. It takes away from them the everyday, lower-level aspiration that is purely technical in nature, (and which we have come to accept) and replaces it with something deep, which will make a real difference to all of us that inhabit the earth. -- Christopher Alexander, from the Foreword to Patterns of Software by Richard P. Gabriel

CSE 230 material by Pawas Ranjan is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Source code for this website available at GitHub.