T-Th 9:05
or
T-Th 11:15
in Olin 155

CS 1110: Introduction to Computing Using Python

Spring 2018

Syllabus

This syllabus is in Accreditation Board for Engineering and Technology (ABET) format.

CS 1110. Introduction to Computing Using Python

Credit: 4 hours

Prerequisites: Basic high school mathematics (no calculus) but no programming experience.

Catalogue description: Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recur-sion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming, and GUIs (graphical user interfaces). Weekly labs provide guided practice on the computer, with staff present to help. Assignments use graphics and GUIs to help develop fluency and understanding.

Required or elective: [Engineering] Common-curriculum course: one of CS 1110-1115 is required.

Textbook(s) and other required materials:

  1. Downey, Allen B., Think Python: How to Think Like a Computer Scientist, 2nd Edition. O'Reilly, 2015. Obtain free PDF at http://greenteapress.com/wp/think-python-2e/
  2. Anaconda, a free development environment for Python. Installation details on course website here

Course objectives: The primary goal of CS1110 is to give students a basic introduction to object-oriented and procedural programming, using Python.

Topics covered:

  • Primitive types and class types
  • Functions (procedures, and fruitful functions), including recursion
  • Basic statements: assignment, if-statements, loops, blocks, function calls
  • Objects and classes, including subclasses, inheritance, and overriding
  • Sequences and dictionaries
  • Testing and debugging
  • Program development; stepwise refinement (top-down design) and object-oriented design
  • Basic searching and sorting algorithms
  • A model of execution
  • Programming style considerations

Class/laboratory schedule:

  • Two 50-minute lectures per week.
  • One 50-minute lab per week

Contribution of course to meeting the professional component: This course contributes to item (a) of the professional component (one year of a combination of college level mathematics and basic sciences appropriate to the discipline) and to item (b) engineering design.

Course outcomes and their relation to ABET program outcomes a-k:

  1. Be fluent in the use of procedural statements - assignments, conditional statements, loops, func-tion calls - and sequences. Be able to design, code, and test small Python programs that meet requirements expressed in English. This includes a basic understanding of top-down design. (a, b, c)
  2. Understand the concepts of object-oriented programming as used in Python: classes, subclasses, inheritance, and overriding. Understand the basics of OO design. (a, b, c, k)
  3. Have knowledge of basic searching and sorting algorithms, and knowledge of the basics of vec-tor computation. (k)

Assessment of course outcomes Course outcomes will be assessed by examination (midterm tests and a final) and student-submitted homework and programming assignments.

Ethical behavior statement:

The rationale for our policies is as follows.

In order to learn the material, we expect you to work in groups of one to two (as specified on an individual basis for each assignment) and complete the assignments by your own efforts. It's fine to get certain types of advice from other people, but you should develop your own code. We do not want you to get "help" by seeing or hearing another student's solution, and we do not want you to do the assignment in a large team and then hand in several copies of the resulting code. We give you grades as a recognition you have completed the assignment in the way we asked.

So that students receive the maximum benefit of working on the assignments themselves, we also prohibit providing unauthorized aid to other students. While it may seem that showing someone your code is helping them, we view this as actually harmful to them, and providing unauthorized assistance is a violation of Cornell's Code of Academic Integrity (see I.B.2 of the Code).

Given the above, here are the course rules, where "you" means you and, if there is one, your one CMS-registered group partner,

  1. You must never look at, access or possess any portion of another group's code in any form.
  2. You must never show or share any portion of your code in any form to anyone except a member of the course staff.
  3. You must not ask for or use solutions from outside sources; for example, on online services like StackOverflow.
  4. You should specifically acknowledge by name all help you received, whether or not it was "legal" according to rules (1)-(3) above. This is also known as "citing your sources". See the sections below for how. Exception: you do not need to acknowledge the course staff (although we appreciate it if you do!).

The full academic integrity policy for CS 1110 is detailed and has been developed with some thought. The complete documentation for this semester is here.



Course Material by: E. Andersen, A. Bracy, D. Gries, L. Lee, S. Marschner, C. Van Loan, W. White