CSC 106: Intro to CS
Can Computers Think?
Instructor: Prof. Chris Fernandes
When & where we meet: MWF 10:30-11:35 and Thurs 10:55-12:40 in Olin 107
Office Hours: Mon & Wed 1-4, Tues 2-3, and Fri 11:45-12:30
or anytime my door's open!
Office: 220 Steinmetz Hall
Course Webpage: http://nexus.union.edu
Text (1 required). Available at the Bookstore:
Starting Out with Python, 3rd ed,
2015, ISBN: 978-0-13-358273-4
CSC 106 is an introductory course in computer science, focusing on
the theme of artificial intelligence (AI). If you've ever wondered
how computers are able to perform "intelligent" tasks, this course
will show you how the magic works.
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. If
you're a neuroscience major, this course will help you see how
scientists are using biological and neurological principles to
model "behavior" in computers. It's also a foundation for the
computational track in neuroscience. And if you're here just because
you're curious, well, that's great since AI is cool!
By the end of the course, you should be
proficient in the following:
- to understand the Python programming language in order to
write functional programs that act "intelligently"
- to understand the concept of search, which arguably is
at the heart of most "intelligent" systems
- to develop good debugging skills by learning how to examine your code
methodically and use process-of-elimination to discover errors
- to learn how the computer represents and processes information
We will cover the following topics (at minimum):
- file reading/writing
- binary numbers and ASCII
- strings and string methods
None! Well, there is one: a desire to work, learn, and get involved!
No previous computer programming experience is required.
You will need one bit of hardware: a USB flash drive (thumb drive) that you can store your work on. Please
bring it to class every day. They are available in most stores, including our own bookstore.
In class, you are required to use our lab computers.
However, when working on your projects outside of class, you have a choice.
If you'd like to continue using our labs, feel free! We have three
spaces that you can use:
- Olin 107, where we have class
- Pasta lab (N104 in the Science & Engineering building)
- CS Resource room (Steinmetz Hall, 209A, just down the hall from my office)
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 install some software:
The software is free and has versions for Windows, Mac, and Linux.
- Exams There is 1 midterm that will be on
Wed, Oct 11th and a final exam.
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
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
of class on the day it is due.
No lates will be accepted.
You must turn in both a hard copy (on paper) and an electronic copy (on
Nexus). Your assignment is not
turned in unless you give me both.
- 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 Thursdays, 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 paper and on
No lates will be accepted.
- 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,
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.
- 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.
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 the group of you
are each at your own computers 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
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.
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
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...
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
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.
- that is part of someone else's ICE or project
- that is on the Web/Internet
- that is in other textbooks
We have an honorcode now and I'm trusting 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
What you need to do
To prepare for class, you are required to do the following:
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
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.
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 Facebook, 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. You are invited to
"turn in" your phone at the start of class in order to be free of distraction.
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.
I always have at least one student each term who loses all of
his/her 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 or
storing it on your orzo account.
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.
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
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.