CSC 106: Intro to CS
Can Computers Think?
Syllabus
Instructor: Prof. Chris Fernandes
Email: fernandc@union.edu
Office Hours: TBD
Office: 219 Steinmetz Hall
Phone: 388-6401
Course Webpage: http://nexus.union.edu
Textbook: Programming in Python 3,
Bailey Miller, et al,
Zyante, Inc., 2019
This is a zyBooks textbook that you can get online or from the Bookstore.
Here's how to get it:
- Click on the "Our zyBooks textbook" link in Nexus. (Do NOT go to
the zyBooks website and create a new account.)
- Click Subscribe
It costs $58 and will be available online until June 25, 2021. But as long
as you save it to a pdf file before that date, you can keep it forever.
Course Summary
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):
- functions
- variables
- assignment
- conditionals
- loops
- recursion
- lists/arrays
- 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.
Software
You'll be doing a lot of hands-on work both in and out of class with the
Python development environment.
It includes the IDLE editor we use in class. Download version 3.9.2.
This software is free and has versions for Windows, Mac, and Linux. Install it
on your own computer as soon as possible, but definitely by Wed of week 1.
Evaluation
- Exams There is 1 midterm that will be on
Mon, May 3rd 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
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 must be uploaded to
Nexus by the
start
of class on the day it is due.
No lates will be accepted.
- 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, usually at the next class.
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 access the quiz on Gradescope, which is linked to from
our Nexus page. You can miss 4 of these
quizzes without penalty. The quiz will be available for
exactly 7 minutes from the start of class.
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 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
plagiarism.
-
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 zoom 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 show 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 is on the Web/Internet
- 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 honorcode 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
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 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,
do the readings, and watch the zoom recording 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 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 (mine and yours).
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
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
emailing it to yourself, or using Dropbox, or all three.
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
COVID-19 issues: If you are quarantined or isolated for COVID-19-related reasons,
I will be notified by the Dean of Students Office that you may
require flexibility with regard to your participation in this course.
Your responsibility will be to contact me as soon as you are able so
that we can discuss your needs.
For students with learning disabilities:
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.