Introduction to Computer Science I - 03 (Spring 2017)

This course provides an introduction to the field of computer science. You will exercise the creative and logical sides of your brain like never before, applying them to the development of software. You will learn to program with the Python programming language and you'll learn to build dynamic web apps. You will learn about and discuss how technology effects society, and how computer scientists can help.  Most important, you will improve your problem-solving skills in a manner which will help you in all walks of life.

Topics and Schedule  

Lecture: Harney 235 MW 3:30-5:15

Pre-Requisite:CS 107 with a minimum grade of C or concurrent MATH 109 with a minimum grade of C

Course Materials

We will be using the online book: How to Think Like a Computer Scientist: Learning with Python: Interactive Edition 2.0 

Staff

Instructor: David Wolber
Email: wolberd@usfca.edu
Office: Harney 529
Office Hours: MW 9:30-10:30, TR 2:30-3:30

 

Teaching Assistant: Jennifer Cruz Hernandez
Email: jjcruzhernandez@dons.usfca.edu
Office hours: MW 5:15-6:15, R 4:30-6:30

The CS department also provides a tutoring center with students available many times during the day: tutoringcenter.cs.usfca.edu

Checklists, Quizzes, Code Camp

Computer science, like Math, requires a consistent commitment-- you need to put in the work each and every week. If you fall behind, it is very hard to catch up. To help you stay on track, there will be a homework checklist due almost every week and a quiz most wednesdays at the start of class.

The course meets in the Kudlick lecture/lab classroom (HR 235). A portion of most class meetings will be devoted to hands-on lab programming assignments. These tasks will begin during class time but generally will require out-of-class work to complete. The Kudlick lab is available in the evenings and there is a lab on Harney 5th floor available (HR 530). You can also work on these assignments on your laptops and home computers. 

Assignments

The lab assignments and projects are a significant part of the grade for the course. Assignment due dates are strict: no credit is given for work turned in after the due date.

You are allowed one extension for the semester, for 80% credit, with the following restrictions:
* you must email the professor (wolberd@usfca.edu) and TA jjcruzhernandez@dons.usfca.edu before the deadline asking for the extension.

* you must submit the assignment within three days of the original deadline.

* you must schedule a code walk-through with your professor/TA and successfully explain your code and understanding of it.

Quizzes and Code Camp

Quizzes will be given just about every week, usually on Wednesdays, about eight for the semester. The quiz will cover concepts from the reading, in-class lessons and assignments-- completing the assignments while doing your own work is a great way to prepare for the quizzes.  You may throw out one quiz score if you do a code camp for it. You may not make up a quiz without a doctor's note, and you must notify the instructor before the quiz if you are ill.

Each week, you may attend Code Camp to make up to 1/3 of the points you miss on the quiz, or 10 points, whichever is more. So if you get a 40 on the quiz, you can make up 60/3 = 20 points, for a revised score of 60. If you get a 100 on the test, you can earn 10 for a 110. Code camp takes place in your instructor's office hours. You'll work problems out on a whiteboard with another student for 20-30 minutes, working on a series of questions given to you by your instructor. To receive the makeup points, you must attend Code Camp within one week of the quiz. If you can't make office hours, make an appointment.

Midterm and Final 

There is one midterm and a final. You may earn "code camp" points (1/3 of what you miss) for the midterm, but not for the final.

Midterm1: Wednesday, March 8, in class.
Final: Saturday, May 13, 5:30-7:30 pm in Harney 235

Grading

Quizzes, Midterm, and Final: 60%
Assignments and Projects, 40%

Attendance

Because of the hands-on nature of the course, attendance is mandatory. Assignments and quizzes given in class cannot be made up.

Cheating and Plagiarism

Each student is to do his or her own work on the assignments and exams. It is fine to talk with others about general approaches used to solve the assignments or simply to understand the problem statement, but each student is to develop his or her own solution; you may not share code or read the code of another student.

In addition, using solutions from any other source is forbidden. In particular, using solutions from previous offerings of this course is not allowed. To summarize: all assignments are to be individual and original efforts.

Learning Outcomes

On completion of this course the student should be able to accomplish the following:

* Write computer programs using the Python programming language.

* Manipulate different types of data: number, text, lists, and dictionaries.

* Write and understand basic computer algorithms

* Mentally execute and trace the execution of computer programs.

* Create simple web apps

* Find and solve simple computer program bugs.

Core B-1 Learning Outcomes

In accordance with the Core-B1 learning outcomes, through in-class worksheets and coding assignments, along with assigned coding projects, and quizzes and midterms, CS 110 will teach you how to:

1.Design a mathematical (algorithmic) solution: You will learn how to design algorithmic solutions, using pseudo-code, for real-world problems.   

2.Implement the design or identify and correct problems with the design: You will learn to implement (code) working apps for your designed solutions.You will be given sample designs for programs and will learn how to identify the pros and cons of each option.

3. Evaluate the validity of a solution and its relevance to the original problem using reasoned discourse as the norm for decision making:You will learn to conduct system tests of your apps to evaluate their validity, and to present/debate the efficacy of your solutions and decision making. You will be asked to provide detailed methodology and steps taken towards the code you submit, including assumptions and simplifications, thus evaluating the validity of your own proposed solutions.

 

 

 

 

Course Summary:

Date Details Due