Course Information

Welcome to CSC 253! Understanding the staff's expectations will make this course more engaging, effective, and fun for you. Please post your questions to Piazza so that we can clarify.

(This information is subject to change.)


CSC 253 is a graduate-level course that assumes deep familiarity with programming languages and compilers, as well as the pragmatic details of working in a command-line environment. We recommend that you've taken CSC 252 and 254, or equivalent architecture and compilers courses, respectively.

Even with these prerequisites, be prepared to take a lot of initiative to fill in the gaps in your prior knowledge. Since this is a graduate-level course, we will not spoon-feed you everything you need to know. The staff will be available in office hours and on Piazza, but it's up to you to proactively seek out help.

In particular, you will need to learn the C and Python languages as the semester progresses. Although we will be using C and Python extensively to study dynamic language concepts, the purpose of this course is not to give you a comprehensive introduction to these languages.

Course overview and philosophy

Read the welcome page for an overview of this course and its philosophy. This page deals mostly with logistics.

Course Format

We will meet in class twice a week for 75 minutes each. Since this is a small studio-style class, attendance is mandatory.

Grading Policy

  • 10% – Code annotation assignment 1
  • 10% – Code annotation assignment 2
  • 10% – Code annotation assignment 3
  • 20% – Midterm blog post
  • 10% – Final project blog post 1
  • 10% – Final project blog post 2
  • 10% – Final project blog post 3
  • 10% – Final project in-class demo
  • 10% – Attendance

50% of your final grade will come from your understanding of dynamic language concepts that we cover in class, assessed via three code annotation assignments and a midterm blog post. 40% will come from an open-ended final project. And 10% will come from attendance. There are no exams in this course.

There is no hard cutoff for final letter grades. Your grade will be determined by the staff during an end-of-semester grading meeting. We try hard to give everybody the letter grade that they deserve based both on numerical scores and on in-class effort. Thus, this class is graded on a “quasi-curve.” It's not a true curve since we don't mandate a certain set proportion of A's, B's, or C's.

However, we understand that you might be nervous about your final grade. To alleviate this concern, here is our promised worst-case grading scale. If you get above these percentages, then you're guaranteed at least the following straight letter grade:

  • 95.0% – A
  • 92.0% – A-
  • 85.0% – B
  • 82.0% – B-
  • 75.0% – C

These percentages look high, but that's on purpose. For example, if you get a 97%, then you're guaranteed an A. What about if you get a 91%? Or an 89%? Depending on the results of our grading meeting, we might still give you an A, A-, or B+, but we make no promises. You'll at least get a B, since you're above 85%.

If you end up below the percentage for the grade that you want, don't panic! Remember, this is a worst-case scale, not a hard cutoff. For instance, plenty of students below 95% will still get an A, although those grades are subject to staff discretion. In the rare event that everyone in the class absolutely mastered the material, then we will be delighted to give everyone an A!

Finally, not only is attendance a part of your grade, but your scores on assignments will also suffer if you don't come to class. For instance, part of your code annotation grade comes from Professor Guo asking you questions about your assignment in class. And final project planning will also occur during class time.

Why is there so much emphasis on blog writing?

This course is unique in that your primary output will be technical blog posts that communicate what you have been learning. Why did we choose this format? Because being able to teach others via clear, compelling, and concise writing is one of the best ways to show that you've mastered the course material.

We respect your privacy, so your blog posts will initially be visible only to students and course staff. Your fellow students will need to see your posts since they will be offering in-class critiques to help you improve. You will get a chance to revise every post and then resubmit based on feedback.

At the end of the semester, if you agree to make your posts public, Professor Guo will host your posts on the course website and publicize them to the Python developer community. These blog posts will serve as valuable learning resources to help programmers from all around the world. You will be credited as the author, so these posts will make for a good public portfolio to show potential employers.

Finally, note that although you will be doing a lot of coding for your final project, ultimately the most valuable and lasting artifacts are the ideas embodied by your project, not its code. That is why you will be graded mostly on the blog posts written about your project. You are free to make your code public and link to it from your posts. But realistically, people are unlikely to re-use your code; they are more likely to learn from your ideas.

Collaboration Policy

For all assignments in this course and the final project, you may either work alone or with one partner. If you work with a partner, you must turn in a single copy of each assignment with both of your names on it. You will both get the same grade.

Regardless of whether you work alone or with a partner, it is in your best interest to deeply understand what you are writing, since Professor Guo will sometimes ask you questions about your assignments during class.

Academic Honesty Policy

Since this is a small writing-intensive class, it is easy to catch plagiarism. Do not copy any parts of assignments from outside sources or from students other than your partner.

For your class project, we expect you to write most of the code on your own but recognize that it is sometimes useful to copy and paste small snippets from other sources. If you choose to copy small snippets of code, you must attribute the sources appropriately as comments in your code. However, copying large pieces of code or trying to pass off someone else's project components as your own are definitely violations of academic honesty. When in doubt, ask the staff about your specific situation. (This policy is somewhat analogous to citation and plagiarism policies for writing courses.)

If violations occur, it is our duty to take actions according to the University's official academic honesty policy. Do not put us in this position, since it is not pleasant for anyone involved.


CSC 253 Piazza is where all electronic communications occur. It is your responsibility to check Piazza regularly. Email Professor Guo if you cannot activate your account.

If you email the staff, we will probably just tell you to post on Piazza instead so that your classmates can benefit. You can also post privately so that only the staff sees your message.

Grading Questions

Grading questions may be asked only at Professor Guo's office hours. Do not ask your TAs or post those questions on Piazza.

No Extensions

All late assignments will receive a score of 0, since giving special treatment for lateness is not fair to your classmates who worked hard to turn in their assignments on time.

We understand that you're all busy with other classes and activities, but assignment due dates are set at the beginning of the semester, so you should plan on managing your time appropriately. If you work with a partner, that will decrease your chances of missing an assignment deadline.

Finally, in our experience, the best way to address personal issues that affect your academic work is to seek help, either from your peers or via official student support resources (e.g., CARE, Student Support Network).

No Textbook

There is no required textbook. All learning materials will be drawn from freely-available websites.

Last updated: 2014-09-03