/cs1300

CSCI 1300 - Intro to Computing - University of Colorado Boulder

Primary LanguagePython

CSCI 1300 (Spring 2013) Syllabus

This describes Introduction to Computing, sometimes known as CSCI 1300, at the University of Colorado, Boulder. The course home page is actually a GitHub repository located here:

https://github.com/johnsogg/cs1300

People and Office Hours

Instructor: Gabe Johnson - gabe.johnson@gmail.com

TAs:

LAs:

Office Hours are kept up-to-date on the Google Calendar

Space/Time Coordinates for Main Lecture

Where: Math 100 When: M-W-F 1:00--1:50pm

Course Purpose

The purpose of this class is to give everybody the opportunity to learn how to program. This is not a "weed out" class where we run you through the computer science gauntlet, causing sleep deprivation or setting you off on strange mental marathons. (No guarantees about subsequent courses, however.)

No, the goal here is to give everybody the chance to learn how to program and decide if this is a profession/skill/avocation that they want to pursue. Computer programming is often seen as an impenetrable craft practiced exclusively by mad geniuses. I can assure you this is not the case.

Computer programming, and the more general idea of computational thinking, is rapidly becoming a basic literacy skill. By the end of this course (even if you don't continue with more advanced computer science courses) you should be able to pick up new languages, tools, technologies, and make them do tricks. You will also be able to have more intelligent, informed conversations with professional software engineers, interaction designers, and hackers.

Grading and Course Structure

There are three components to your final grade: Homeworks, tests, and the final project. Each is worth 1/3 of your grade. Homeworks are due and tests are given on Fridays (except for the one test immediately before Spring Break, proving I do have a heart). Check the schedule.

Homeworks (90 points possible)

There are nine homework assignments. Each is 10 points, for a total of 90 points. Homeworks are due at 6pm. After they are late, you may only receive a maximum of 5 points. You may use RetroGrade to turn in your assignment as often as you like. Keep in mind that if you turn it in after it is due, it will cap your score at 5/10.

Many assignments can be completed in several languages, though you are only required to complete it in one. Happily, you can turn in assignments in the other available langauges and earn up to 10 extra credit points.

At the end of the semester, provided you received at least 5/10 on all homework assignments, extra credit will be aded to your total homework grade. This means it is possible to get well over 100% on your homework grade. This is meant to lure you into programming the same general idea in several languages to give you a sense of how the languages differ.

Collaboration on homework assignments is strongly encouraged. If you work together or find a web site with code that you learn from, you must indicate the relevant people and web sites in the source code you submit. Further, if you do work with other people, or find code on other web sites, you must type all the code yourself. Obviously I can't police copy/paste, so please realize this is for your own good. Trust me, I've been around the block once or twice.

Homework assignment descriptions and file downloads will appear in the course GitHub repository over time. I will try to make them available far in advance so you can work ahead if you like.

Tests (90 points possible)

There are three tests that happen during normal lecture periods. They are all given before spring break. Anything that has been covered in class before the test is given is fair game. So this means if there was something tricky covered on the first test, it might make an appearance on the second or third test.

Tests are not collaborative. The Eye of Sauron will be watching. So will I. Do not cheat.

Specific information about tests will appear in the course GitHub repository about a week before they happen.

Project (90 points possible)

Programming is a practical art. The project gives you a chance to do something fun, interesting, epic, or all of the above. Watch this space for more information, because we haven't figured out the parameters for this yet. In the meantime, be thinking about cool things you can do with code, and you might be able to do it for your project.

We realize that having 1/3 of your grade come at the very end is nerve-wracking. Therefore, grading for the project will be fairly lenient. Watch this space.

Plagiarism Detection

You might be interested to know that this is a thing. Remember to type your own homework assignments and attribute any collaborators or source web sites.

Reading / Viewing Material

There is no required book for this course. Textbooks are absurdly expensive, and there are a number of high-quality introductory texts (and videos!) available online. Learning to program is best done by writing lots and lots of code. So: I will suggest readings from these books throughout the course, but none of it will sink in unless you write code to convince yourself that you know what you are doing.

There are probably thousands of programming languages. For any given task one language may be superior to another. One of the main goals for this class is that you learn how to learn programming languages. Therefore, we will program in not one, not two, but three languages: Python, Java, and C++. You are encouraged to take it upon yourself to learn six more. That would be awesome. But it isn't required.

The links below are all extensive texts on these languages. They are all freely available on the web, but in some cases you can give the author money if you want a nicer version.

Learn Python the Hard Way

:: http://learnpythonthehardway.org/

thenewboston's YouTube Python Tutorials (thanks Sean for the tip)

:: http://www.youtube.com/course?list=ECEA1FEF17E1E5C0DA

C++ Language Tutorial

:: http://www.cplusplus.com/doc/tutorial/

Learn C The Hard Way

:: http://c.learncodethehardway.org/

Think Java (How To Think Like A Computer Scientist)

:: http://greenteapress.com/thinkapjava/

The Command Line Crash Course

:: http://cli.learncodethehardway.org/

Fun Stuff

Sometimes I find interesting web sites or little toys that might be appealing to beginning CS students. Here are some refs to cool things.

Project Euler

:: http://projecteuler.net/ These are little puzzles that can be solved with math and little programming hacks. Challenge yourself! (Thanks to Will Holden for finding it.)

General Topics

Here are the general topics we will cover in CS 1300:

  • What programming is (and is not) about

  • Programming languages, tools, IDEs, and application domains

  • Shell interaction (command line interfaces)

  • Programming communities and you

  • Syntax and Semantics

    • Keywords
    • Operators
    • Operands
    • Statements
    • Variables
    • Literals
  • Expression Evaluation

    • Operator precedence
    • Functions evaluate inline
  • Data types

    • Bits and bytes
    • Integers, shorts, longs
    • Floating point numbers (float, double)
    • Boolean
    • Characters and strings
    • Comparing, combining
  • Execution

    • Loops
    • Flow control (conditional execution)
  • Functions

    • Writing and calling functions
    • Function parameters and return values
    • Relate high-level constructs to low-level code
  • Strings

    • Make, manipulate and use character strings
    • Keyboard-based interaction
  • Files

    • Create
    • Read
    • Write
  • Data Structures and Algorithms

    • How to use collections
    • Use search algos to find specific or extreme members of collections
  • The Art of Defensive Programming

    • Two programming activities: debugging, or bugging
    • Top-down design
    • Programming with pencils
    • Collaboration
    • Use common program plans
    • Find and fix bugs
    • Good programming style

Your Rights

Disability Accommodations

If you qualify for accommodations because of a disability, please submit to me a letter from Disability Services in a timely manner so that your needs may be addressed. Disability Services determines accommodations based on documented disabilities. Contact: 303-492-8671, Willard 322, and http://www.Colorado.EDU/disabilityservices.

Disability Services' letters for students with disabilities indicate legally mandated reasonable accommodations. The syllabus statements and answers to Frequently Asked Questions can be found at http://www.colorado.edu/disabilityservices.

Religious Observances

Campus policy regarding religious observances requires that faculty make every effort to reasonably and fairly deal with all students who, because of religious obligations, have conflicts with scheduled exams, assignments or required attendance. In this class, {{insert your procedures here}} See full details at http://www.colorado.edu/policies/fac_relig.html

Classroom Behavior

Students and faculty each have responsibility for maintaining an appropriate learning environment. Those who fail to adhere to such behavioral standards may be subject to discipline. Professional courtesy and sensitivity are especially important with respect to individuals and topics dealing with differences of race, culture, religion, politics, sexual orientation, gender variance, and nationalities. Class rosters are provided to the instructor with the student's legal name. I will gladly honor your request to address you by an alternate name or gender pronoun. Please advise me of this preference early in the semester so that I may make appropriate changes to my records. See polices at http://www.colorado.edu/policies/classbehavior.html and at http://www.colorado.edu/studentaffairs/judicialaffairs/code.html#student_code.

Honor Code

All students of the University of Colorado at Boulder are responsible for knowing and adhering to the academic integrity policy of this institution. Violations of this policy may include: cheating, plagiarism, aid of academic dishonesty, fabrication, lying, bribery, and threatening behavior. All incidents of academic misconduct shall be reported to the Honor Code Council (honor@colorado.edu; 303-725-2273). Students who are found to be in violation of the academic integrity policy will be subject to both academic sanctions from the faculty member and non-academic sanctions (including but not limited to university probation, suspension, or expulsion). Other information on the Honor Code can be found at http://www.colorado.edu/policies/honor.html and at http://www.colorado.edu/academics/honorcode/.

Discrimination and Sexual Harrassment

The University of Colorado at Boulder policy on Discrimination and Harassment http://www.colorado.edu/policies/discrimination.html, the University of Colorado policy on Sexual Harassment and the University of Colorado policy on Amorous Relationships applies to all students, staff and faculty. Any student, staff or faculty member who believes s/he has been the subject of discrimination or harassment based upon race, color, national origin, sex, age, disability, religion, sexual orientation, or veteran status should contact the Office of Discrimination and Harassment (ODH) at 303-492-2127 or the Office of Judicial Affairs at 303-492-5550. Information about the ODH and the campus resources available to assist individuals regarding discrimination or harassment can be obtained at http://www.colorado.edu/odh