CompSci 190
Fall 2022
Programming Games
FOCUS Section

Education is the kindling of a flame, not the filling of a vessel. — Socrates

Classroom setup

Meeting Time

Attendance is required (either in person or online) since we will be actively programming or designing every day.

Expect to spend a significant amount of time outside of class time practicing coding and debugging.

I am excited to bring you the best learning experience collaboratively — so I look forward to your thoughts and suggestions.

Professor Robert C. Duvall

  • rcd AT cs DOT duke DOT edu
  • LSRC room D228
  • Office Hours (in person or via Zoom): Mon, Tue, Wed 2-3pm
  • Drop-in policy: You may make an appointment via email

In general, only email me about administrative aspects of the course (please put CompSci 190 in the subject line); questions about course content are better made using the course Q&A Board where an answer can benefit everyone.

If I do not respond to your email within 24 hours, I probably did not receive it.

Topics

The following topics will be covered during the semester.

The exact order and details of these topics will be given on the course Calendar, and may change during the semester based on the pace needed. Additionally, we may explore collateral topics as determined by your interests.

Books

We will be using an online textbook from Rephactor.com, as well as other online materials. To purchase the text, create an account, follow steps to pay, then join this course with the Course ID found on Sakai. You can access each week's assigned reading from your Rephactor account's Dashboard. Some topics are also available as videos to provide an additional way to learn and review.

Readings about Game Design will be excerpts from the books listed below or online articles or tutorials:

Game Design
Generally Useful Books

You are expected to do the readings in order to be prepared to ask and answer questions in class.

Course Management

This is a flipped, just-in-time class:

We will try to keep a consistent weekly schedule:

To succeed in this course, Code Every Day:

Typical Weekly Deadlines:

Monday Quick Check Quizzes submit within the online textbook
Wednesday Practice Exercises submit within the online textbook
Sunday Game Projects submit using Sakai

These deadlines are given to help keep you prepared and on track, but you may submit assignments any time during the week without penalty to accommodate conflicts that may come up.

Getting Help

Help is available:

Ed Q&A Board. Post any questions you have about the course on the Q&A Board because it is seen by the entire course staff and other students, ensuring a much faster response time that sending us email. Before posting a question, check all previous questions since it is potentially confusing to have two different answers to the same question. When posting, it is important that you are as clear as possible when describing your problem, include exact error messages, and describe steps you already taken. If you solve your own problem, post your (non-code) solution for others benefit.

Post as little code as possible in order to describe your problem so as not to give away the solution to your classmates. In many cases, you may be able to post only the single line that is causing the problem. In cases where it is necessary to post more, you may want to replace some parts with comments representing pseudocode. Never post complete methods — if you are in doubt, post a private message to the instructors.

We encourage you to answer each other's questions and we will endorse correct answers. We also welcome you sharing things you think will be useful to your classmates in order to help build the class community.

You should check the Q&A Board at least once a day.

OIT Co-lab and Tech Help. The Innovation Co-Lab supports tech all over campus. They have staff professionals and experienced students who can help you with tech questions about Python/PyCharm and much more. You can see Office Hours times and make appointments, as well as find learning opportunities online.

Learn Better. Think Smarter. The Academic Resource Center (ARC) offers free services to undergraduate students, including Learning Consultations, Peer Tutoring and Study Groups, ADHD/LD Coaching, Outreach Workshops, and more. Undergraduates in any year, studying any discipline can benefit because they work with you individually to discover and develop your own academic strategy for success. Contact the ARC to schedule an appointment.

Mental Health

Duke's goal is simple: to help you learn, both inside and outside the classroom. If you have a problem or question, we want to talk about it — do not put it off.

Grading

Grading is done on an absolute, but adjustable scale. This means that there is no curve. Anyone earning 90% or more of the total number of points available will receive a grade in the A range; 80% or more guarantees a grade in the B range, 70% or more guarantees a grade in the C range, 60% or more guarantees a grade in the D range. This scale may slide down, but it will not go up.

There will be several types of assignments during the term, each contributing to your final grade by approximately the following percentages:

Quick Check Quizzes 10%
Practice Exercises 10%
Game Projects 40%
Final Project 40%

Quick Check Quizzes: These basic questions at the end of each topic in the online textbook will be used as part of your grade simply to verify you completed the reading. They are auto-graded as you complete them and you are not expected to get them perfectly correct.

Practice Exercises: These small programming exercises will be listed on your Rephactor dashboard. They are auto-graded as you complete them and are intended to reinforce what is learned in each week's reading.

Game Projects: These open-ended programming projects provide room for you to express some creativity and go beyond the basic specification. You will be expected to complete the assignment's basic functionality and use good style so your program is easily human readable. Later projects will be have greater impact on your final grade since they will typically build on prior knowledge, take more time, and require more thought.

Final Project: In lieu of a final exam, the last month of the semester will be spent creating a game of your own design, so start thinking about it now. There will be several intermediate deadlines to help ensure you are making steady progress and to get feedback from everyone in the class to help improve your game. The two most important key elements to keep in mind are:

To earn an A grade on the programming projects, you must go beyond the basic requirements (any extra credit features will not be counted unless you get the basics working first).

Submitting Assignments Late

Plan on submitting work on time, but work submitted within 3 days of the deadline will be given full credit.

The weekly schedule (prep, practice, demonstrate) is designed to help you easily stay on track and encourage you to practice coding everyday. The secret to successfully succeeding in this course is to start early and work steadily; it is not possible to cram or skim in Computer Science classes. That said, I understand that life often interrupts the best made plans, so the given deadlines are encouraged but flexible in that you will not be penalized for small misses.

Individual extensions beyond the week will be granted for:

If you find you are having trouble or consistently behind — do not give up, ask for help as soon as possible.

Collaboration Policy

All work must be your own — cheating and other short cuts deprive you of the opportunity to practice and learn.

In accordance with the Duke Community Standard, we encourage proper collaboration, in which all parties equally participate. Studying together is always encouraged and, at times, you may be assigned to work in a group — but the experience of coding is something you must practice on your own.

For any given assignment, an interview may be included as part of the graded work. During the interview, you may be asked to explain the problem solving process and individual lines of code not given as part of the assignment. Turning in code you cannot explain is considered cheating.

You may consult with me about any aspect of the course. You may consult with other students only in a general way, e.g., about debugging, programming concepts, or questions about an assignment's wording.

You are responsible for understanding all work you turn in. For example,

With each Game Project, you will submit a README file in which you cite:

If you are not sure what the collaboration policy is for a given assignment — ask for clarification!

Diversity

This course is committed to Duke's Commitment to Diversity and Inclusion.

Even beyond this statement, we believe this class should be a secure and supportive learning environment for all students.

Disabilities

This course is committed to providing equal access to students with documented disabilities. Anyone with disabilities may contact the Student Disability Access Office (SDAO) to ensure equitable access to this course. There you can engage in a confidential conversation about the process for requesting reasonable accommodations both in the classroom and in clinical settings.

Please note that accommodations cannot be provided retroactively — seek out extra assistance and advice early

Computing Requirements

You are expected to have access to and on-going use of a computer on which you can install the software used in the course:

Downloading and installing these should be straight forward but, if you run into any problems, here are detailed instructions.

If your computer breaks, you can login to a Virtual Machine (VM) that OIT has setup to access PyCharm.

Online Course Information

You will use several web sites for this course:

You are expected to check your email regularly, as important course announcements may be sent via email.