Changelog:

  • 29 Feb 2024: be extremely explicit (even though it should not really be necessary) that helping others not write their own code counts as dishonesty

1 Logistics

1.1 Meetings

Lecture is optional but strongly encouraged.

Lectures are Tuesdays and Thursdays at 3:30pm. I will attempt to record all lectures.

I do not schedule review sessions or the like outside of usual class time.

1.2 Tasks

You will be asked to

1.3 Readings

Readings written by us or selected from articles or web pages will periodically be posted on the schedule.

1.4 Coding

If you really want to understand something, the best way is to try and explain it to someone else. That forces you to sort it out in your own mind. And the more slow and dim-witted your pupil, the more you have to break things down into more and more simple ideas. And that’s really the essence of programming. By the time you’ve sorted out a complicated idea into little steps that even a stupid machine can deal with, you’ve certainly learned something about it yourself.
—Douglas Adams

This course will involve multiple programming assignments in C (and maybe a bit of other languages).

Estimating how long it will take someone to complete a coding assignment is always difficult. The target difficulty is 5–10 hours of focused effort each week.

2 Grading

2.1 Points per Activity Type

Since this course has not been offered before, we may adjust these weights as the semester progresses. Any such adjustment will be discussed in class before being implemented.

Task Weight Comments
Quizzes 30% Drop lowest score
Labs 15%
Homeworks 40%
Final 15%

Your final grade is computed based on the percentage of points you have earned and then converted to a letter grade. At the end of the semester, I will decide on a mapping from points to letter grades based on the actual difficulty of homeworks, exams, etc. This mapping will give at least a D- for a 60%, at least a C- for a 70%, at least a B- for an 80%, and at least a A- for a 90%.

2.2 Submitting late

Quiz solutions are released the moment the quiz closes (and the answers may be discussed in the following lecture), and thus quizzes cannot be taken late. Your lowest quiz score is dropped.

Homeworks may be submitted up to 72 hours late (except when otherwise announced). They are given 90% credit between 0 and 72 hours late.

Labs that allow submission (instead of in-person checkoff) will be due by noon the next day and may be submitted late for an additional 24 hours for 90% credit. Labs may not be checked off late except in special circumstances.

If you have special circumstances for which other extensions (or waiver of penalty for late submission) may be warranted, please see the professor to discuss why and if other accommodations are also needed.

The final may not be taken late (or early) without special-case permission.

3 Miscellanea

3.1 Personal accommodations

If you believe that circumstances (illness, religious observations, family emergency, etc.) warrant an change in deadline or some other adjustment, please let me know and we’ll figure out what we can do to accommodate your situation.

If you anticipate issues related to this course due to a disability, you also may want to work with the Student Disability Access Center.

3.2 Professionalism

Behave professionally.

Never abuse anyone, including the emotional abuse of blaming others for your mistakes. Kindness is more important than correctness.

Let our TAs be students when they are not being TAs.

3.3 Honesty

I always hope everyone will behave honestly. I know we all are tempted to do what we ought not; if you do something you regret, the sooner you tell me the sooner (and more leniently) we can correct it.

3.3.1 No plagiarism (nor anything like it)

You must cite any and every source you consult, other than those explicitly provided by the course itself. Talked to a friend, saw an interesting video, consulted a website, had a tutor? Tell us!

In cases where you submit or show code, please put it an appropriate a comment in your code.

3.3.2 Write your own code

You must write your own code.

Not just type it (though you need to do that too): compose it yourself, as your own original work. This includes not asking for/accepting code from students, stack overflow, generative AI tools, etc. (except if explicitly allowed for the assignment). Beware of looking at other students code or code you find online: it is hard to unsee and can spoil your ability to compose your own solutions!

([added 29 Feb:] As should go without saying, you should also not help others in the class avoid composing their own code.)

3.3.3 Understand what you submit

Working together can help you learn. But make sure you learned! We may ask you to explain aspects of a solution you turn in, and may dock points if it appears you simply copied someone else’s ideas (or just guessed a lot of things until one worked) without understanding them.

3.3.4 No help on quizzes

It would probably go without saying if we didn’t say it, but no assistance may be given or received on any supervised evaluation or online quiz unless specifically announced otherwise by the professor (or another proctor of the evaluation).

However, quizzes (unless otherwise specified) are open book/open notes. You may ask TAs, other students, and consult other resources (reference manuals, stack overflow-like sites, generative AI tools) or help with reviewing related lecture, lab, or reading material, but not to ask specifically about (or look for instances where others asked specifically about) the quiz questions.

3.3.5 Consequences of Dishonesty

If I believe you have acted dishonestly (such as by submitting code that are not yours as if they were yours [added 29 Feb:] or helping someone else do the same), I will communicate this fact to you and propose a penalty. If you have information I lack, please share that with me; I may thereafter change my belief and/or proposed penalty.

This penalty is independent of and may be in addition to any referral to the University Honor System.