CSC 120: Programming on Purpose

Syllabus

Instructor: Prof. Chris Fernandes
Email: fernandc@you.know.the.rest
When we meet: MWF 9:15-10:20 and Tues 9:00-10:45
Where we meet: Olin 107
Office Hours: Mon 2-4, Tue 2-4, Wed 1-3 or just drop on by!
Office: Steinmetz 219
Phone: 518-388-6401
Course Webpage: http://nexus.union.edu

Texts are free, online, and mainly for reference:

Course Description

An introduction to software design principles aimed at making software more efficient, robust, readable, maintainable, and reusable. An introduction to object-oriented programming and design, including classes, objects, methods, and sub-typing.

Yeah, yeah, but what's it really about?

Basically, we're here to take what you learned in your Intro to CS course and use it correctly. Novice programmers care about working code. Veteran programmers care about well-written code. Our mantra is: "Just because it works doesn't mean it's good." We'll learn about code design principles, and in the process we'll also learn about the object-oriented way of programming. Finally, you'll learn how to switch from one programming language to another (Python to Java) so that if you need to learn a new language on your own in the future, you'll know what to do.

By the end of the course, you should be more knowledgable in the following:

We will cover the following topics (at minimum):

Prerequisites

Introduction to Computer Science (CSC 10x or equivalent). Talk to your instructor immediately if you do not meet this prerequisite.

Software

You'll need some software in order to do the labs and projects.

The software is free and has versions for Windows, Mac, and Linux.

Evaluation

Grading

Note that you must get a C- or better in this course in order to take any other course that requires CSC 120 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):

Ok, so what should you do? Here are some tips:

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...

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 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

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 222. 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.