CSC 105: Intro to CS
Game Development
Syllabus
When we meet: MWF 10:30-11:35 and Tues 10:55-12:40
Where we meet: Olin 107
Instructor: Prof. Chris Fernandes
Email: fernandc (at) union (dot) edu
Office Hours: Mon 12:45-1:45, W 1-3, Tu 2-4, F 1-2
or anytime my door's open!
Office: 219 Steinmetz Hall
Phone: 388-6401
Course Webpage: http://nexus.union.edu
The text for this course is online and free:
Course Summary
CSC 105 is an introductory course in computer science, focusing on
the theme of playing and making games. If you enjoy games of any sort:
board games, video games, card games, etc., then this course
will show you how to make your own.
At its core, this course is about how computer scientists
think about and solve problems. So if you're thinking about
a CS major or minor, this will give you a solid foundation.
And if you're here just because
you're curious, well, that's great since games are fun!
By the end of the course, you should be
able to do the following:
- understand and write in the Python programming language in order to
create functional programs that either implement or simulate playing games
- practice good debugging skills
- write algorithms in pseudocode that will successfully solve a problem
- understand how the computer represents and processes information
We will cover the following topics (at minimum):
- functions
- variables
- assignment
- conditionals
- loops
- recursion
- lists
- file reading/writing
- binary numbers and ASCII
- strings and string methods
- dictionaries
Prerequisites
None! Well, there is one: a desire to work, learn, and get involved!
No previous computer programming experience is required.
Hardware/Software
In class, you are required to use our lab machines.
However, when working on your projects outside of class, you have a choice.
If you'd like to continue using our machines, feel free! We have three
spaces that you can use:
- Pasta lab (ISEC 051 in the Integrated Science & Engineering Complex)
- CS Resource room (Steinmetz Hall, 209A, just down the hall from my office)
- Olin 107, where we have class
All of these labs are available to you 24/7 using your ID card, except when classes
are being held in them. If you'd rather work on your own computer, that's
ok too, but you'll need to download some free software:
Evaluation
- Exams There is 1 midterm and a final exam.
The midterm is on Fri, October 11th.
Exams are cumulative, closed book, and limited notes. You may bring
one single-sided page of notes to the midterm and two single-sided
pages of notes to the final.
If you cannot be at an exam for a good reason (illness, for
example)
then please let me know so we can make other arrangements.
The final will be cumulative. On exams, you will be responsible
for all material covered in the readings and in lectures.
- Programming projects Programming
projects will be assigned throughout the term to reinforce
the concepts discussed in class. Projects are due at the
start
of class on the day it is due.
No lates will be accepted.
You will turn in your projects on
Nexus).
- In-Class Exercises (ICEs) We will often
have hands-on computer time during class so you can practice things
first-hand. This is especially true on Tuesdays, when our class
is a little longer. I will occasionally have you turn in your
ICE for credit, either on that day or at the next class. You should
turn in ICEs the same way as programming projects: on
Nexus.
- Microquizzes There will be a 1-point
closed-book, closed-notes quiz at the start of each class.
You can miss 4 of these
quizzes without penalty. You won't be allowed to take the
microquiz if you enter class after I've finished passing it out.
You may not make up a missed microquiz.
The point of these is not busy-work. I hate busy-work.
But in computer science,
we start with simple things and build on them and combine them
into more and more complex ideas. It is important that you don't
fall behind. Microquizzes, ICEs,
etc. are
there to motivate you to review material regularly and
to keep up. If you feel
at any point that something is not quite clear to you, it's your job
to come see me so that we can clarify that issue before we get to
something more complex that builds on it.
Grading
- ICEs: 12%
- Programming projects: 36%
- Midterm: 20%
- Final exam: 20%
- Microquizzes: 12%
Note that you must get a C- or better in this course in order to
take any other course that requires an Introductory CS course as a prerequisite.
Academic Dishonesty
Struggling on your own to figure out what to type next is where a lot of the learning
happens in CS. Give yourself the opportunity to do this -- ALONE. Here are some specific things to avoid
(this is not a complete list):
-
Do not "work on the project together" with friends, especially if each of you
is at your own computer and are always in lock step trying to figure out the same
line or section of code at the same time.
-
Do not give your
code to another person or receive code from another person -- EVER.
You might think that it's just helping out a friend, but it's still
cheating. This rule applies even after you've finished this course!
-
Do not even look at someone else's code unless it is to
give that other person help. For example, if someone asks you
to look at their code in order to understand an error message, that's fine.
If you are looking because you yourself don't know how to write something and
you need "inspiration", that's NOT fine.
Ok, so what should you do? Here are some tips:
-
Once you've struggled with something on your own and you're still getting nowhere, ask for help!
Email and visit me, go to the helpdesk, and, yes, ask your fellow students! They can't show
you code, but they can sure explain things and write out examples.
-
It's ok to write pseudocode together. Get the logic down in English. Then go off
by yourself and translate it to code.
-
It's ok to read and write code together that is not part of the assignment, especially when it
helps demonstrate the concept of what you're being
asked to do. Go through a class example together or maybe a demo. There's no better
way to understand something than trying to think up examples in order to teach it to someone else.
Try it!
You're going to write and see a lot of code in this class. A good
question is: what sources can you legally take code from for your
projects?
It is ok to reuse code...
- that I hand out in class
- that is part of a demo that I leave on Nexus
- that I give you (or that you write) as part of an ICE or past project
- that is in the textbook that we use for this course
It is NOT ok to reuse code...
- that is part of someone else's ICE or project
- that you get from the Internet. This includes ChatGPT and similar systems.
- that is in other textbooks
Here's the bottom line: except for the above, you have to write all the
code yourself, from scratch.
In all cases, you must explicitly cite any source
(like a web page tutorial or a helpdesk person) that you use to help
complete an assignment. Again, this is similar to writing an English
paper;
if you use a quote or material from someone else,
you have to give credit where credit is due. Otherwise you are
inappropriately plagiarizing or borrowing ideas. You do not have
to cite help from me.
We have an honor code and I trust y'all to follow it.
Read up on it at
http://honorcode.union.edu. All suspected
violations will be reported to the Honor Council chair and Dean
of Studies.
What you need to do
To prepare for class, you are required to do the following:
Show up
You are expected to be present for every class. However, I realize that
sometimes other things come up (interview, illness, etc.) so
just please let me know in advance by phone/email if you're going to
be absent. Unexcused absences are NOT allowed and will
affect your grade. If you miss class, get notes from someone
and do the readings before coming to see me. I'm happy to
explain things, but I won't repeat lectures for you.
Read the text
Lectures will primarily follow the major topics covered by the text.
You should do the reading for that week before coming to class so
that questions you have about the material can be answered during
lecture.
There will always be a time for questions about the readings or previous
lectures at the beginning of class. Take advantage of it.
Check the webpage on Nexus
The reading assignments (and other announcements) will be
posted regularly on the course webpage. You are required
to check it at least once a week. I usually update it over the weekend.
Check your email twice a day
I know: it's old tech, but this school runs on email. I send out
a lot of tips, hints, announcements, error corrections, and
lecture addendums over email. Check it at least twice daily.
Stay focused
Class time will be a "hands-on" computing environment. There will
be lots of time to practice with various demos that I'll provide.
But class time is for class work. Using the computers for other things like
other classes' work, checking social media, reading email, or catching the latest ESPN
highlight video is not permitted. This policy extends to cell & smart phones too.
Phones should be in silent mode and out of sight.
Class goes by quick. Stay focused.
If you're done with a demo, don't allow yourself to get bored. Extend the demo. Or help out your neighbor.
Make backups
I always have at least one student each term who loses all of
their work due to a computer glitch or hard drive crash.
Don't let it be you. Make backups
of everything either by saving it on a USB flash drive, emailing
it to yourself, or using a service like Dropbox.
Practice, practice, practice!
This is first and foremost a programming course so you'll be
putting in a lot of time writing, testing, and rewriting code. There's
no other way of getting better at it than by putting in the effort.
Accommodations
Union College facilitates the implementation of reasonable accommodations, including
resources and services, for students with disabilities, chronic medical conditions and temporary
disabilities resulting in difficulties accessing learning opportunities. All students needing services must
first register with Accommodative Services located in Reamer 303. It is strongly recommended that
accommodations be requested within the first two weeks of the term. Last minute requests can be denied.
Any student with a documented learning disorder is welcome to
come talk to me privately about options for completion of exams and
homework assignments.
The Bottom Line
Ask questions and seek help. This is the most important
point of all. I live to answer questions. Don't be afraid to
come to my office every single day if you want. It's better
for everybody (you AND me) if you understand
things sooner rather than later. More often than not, there's
a line of people waiting to see me on the day before a project
is due. You'll get the help you need faster by starting on projects
sooner rather than waiting until the last minute.