CS 0007 - Introduction to Computer Programming

Fall Term: 05-1

 

 

Class

Recitation

Time:

10-10:50

11-11:50 or 12-12:50

Days:

MWF

F

Room:

203 David Lawrence

5505 Sennott Square

Webpage:

http://www.cs.pitt.edu/~jmisurda/teaching/cs0007.htm

 

Note:  You must be signed up for a recitation.

 

Contact Information

 

Instructor: Jonathan Misurda

 

TA: Roochi Mishra

Office:

6404 Sennot Square

Office:

5324 Sennott Square

Phone:

(412) 624-9129

Phone:

(412) 624-8455

Email:

jmisurda@cs.pitt.edu

Email:

rmishra@cs.pitt.edu

Office Hours:

10-12 Tues & Thurs

11-12 Mon & Wed

Office Hours:

1-4 Mon

1-2 Fri

3-5 Wed

 

Description

 

Computers have become increasingly pervasive in today’s society.  Their power to do complicated and repetitive tasks quickly and efficiently has made them invaluable tools in modern society.  In this class, you will learn to harness the power of a computer to do new tasks by creating your own software as opposed to using existing programs.  We will explore the limits of what a computer can and cannot do easily, and provide you with the knowledge and experience to recognize those problems that you may find in life that can be solved with the help of a computer, and the ability to make the computer do those tasks.

 

This class is meant as a first class in computer science.  Anyone is welcome to take it, as computers can be useful in a variety of fields.  It is also meant as an introduction to computer science for those students who wish to pursue the field further, but lack prior exposure to the material.

 

Prerequisites

 

There are no prerequisites. Concepts from basic Algebra will be drawn upon.  Passing familiarity with the operation of a computer is also helpful.

 

(If you are already proficient – i.e. had 1 or 2 courses prior – in computer programming this is not the course for you.)


Course Purposes and Goals

 

Introduction to Computer Programming is meant as a course to expose interested students how computer software is written and tested.  It seeks to illuminate the creative process that is computer programming from the ground up, with an emphasis on good preplanning and style.

 

In this course we will be writing procedural programs in the Java programming language.  Not only will you learn what that precisely means, but you will also, at the end of the term:

 

 

Textbook

 

The text is:

 

            Pohl, Ira and McDowell, Charlie. Java by Dissection. Addison-Wesley, 2000.

 

It can be found in the bookstore.

 

Class Policies

 

Exams: There will be a midterm and a final in this class.  The scheduled final exam is on Saturday of Finals Week at 4pm.  Instead of the problems that will cause, I’ve decided to make the final the last day of regular classes.  If this is a problem, let me know and we can work something out in advance.

 

Cheating will not be tolerated.  Anyone caught cheating will be given a zero for the test and reported to the department following University procedures.

 

Labs and Quizzes: Attending recitation is an important part of this course.  In recitation you will be able to work in a structured setting while completing small tasks (Labs). Concepts from class will be expanded upon and tested with unannounced quizzes.

 

Projects: There will be five out-of-class assignments given.  These are to be completed in the given time (no extensions will be given without a valid excuse.)  These are meant to be your own work; anyone found to be collaborating will be given a zero for the assignment.  Collaborating also means using code from previous terms, other universities, your friends, or finding it on Google.

 

Participation:  Attendance will not be taken, but in such a small class, any absence will be noticed.  Several unexcused missed classes will adversely affect your grade.


Grading

 

Your grade will be based upon 2 exams, 5 projects, labs/quizzes given in recitation (the lowest one will be dropped), and participation:

 

2 Exams

50% (25% each)

5 Projects

35% (7% each)

Labs + Quizzes

10%

Participation

5%

Total

100%

 

 

The scale for the term will be:

Percentage

Letter

97 or above

A+

93-96

A

90-92

A-

87-89

B+

83-86

B

80-82

B-

77-79

C+

73-76

C

70-72

C-

67-69

D+

63-66

D

60-62

D-

less than 60

F

 

 

Term Schedule: The daily topics are subject to change depending on our pace.  They are there to assist you in the readings so you can focus on those concepts prior to class.

 

 

Week 1 – (8/30)

Readings for this week: JBD 1

 

Project 1 Assigned Wednesday 9/1

 

Topics:

  • Introduction to the Course
  • Introductions to Computers
  • Algorithms

 

 

Week 2 – (9/6)

Readings for this week: JBD 2.1-2.4

 

No Class Monday – Labor Day

 

Project 1 Due Friday

 

Topics:

  • First programs in Java
  • Compiling and running programs
  • Variables and Data Types

 

 

Week 3 – (9/13)

Readings for this week: JBD 2.5-2.11

 

Project 2 Assigned Wednesday 9/15

 

Topics:

  • Strings and displaying them
  • Arithmetic
  • Assignment

 

 

Week 4 – (9/20)

Readings for this week: JBD Appendix A1, 2.12-2.14

 

Topics:

  • Binary representation
  • Increment and Decrement
  • Operators
  • Style guidelines

 

 

Week 5 – (9/27)

Readings for this week: 3.1-3.4

 

Project 2 Due Friday 10/1

 

Topics:

  • Statements, expressions, and blocks
  • Boolean expressions
  • If-statements
  • If-Else statements

 

Week 6 – (10/4)

Readings for this week: 3.5-3.10

 

Project 3 Assigned Monday 10/4

 

Topics:

  • While statements
  • For statements
  • Break and continue
  • Switch statements

 

Week 7 – (10/11)

Readings for this week: 4.1-4.5

 

Midterm Friday 10/15

 

Topics:

  • Method invocation
  • Return statements
  • Variable scope
  • Top-down design

 

Week 8 – (10/18)

Readings for this week: 4.6 - 4.13

 

Project 3 Due Friday 10/22

 

Topics:

  • Random numbers
  • Call-by-value
  • Recursion
  • Method overloading

 

Week 9 – (10/25)

Readings for this week: 5.1 - 5.6

 

Project 4 Assigned Monday 10/25

 

Topics:

  • Arrays
  • Passing arrays to methods
  • Min and Max
  • Sorting
  • Searching a sorted array

 

Week 10 – (11/1)

Readings for this week: 5.7 - 5.12

 

Topics:

  • Big-Oh notation
  • Two dimensional arrays
  • Arrays of non-primitive types

 

 

 

Week 11 – (11/8)

Readings for this week: 6.1 - 6.6

 

Project 4 Due Friday 11/12

 

Topics:

  • StringBuffer
  • Objects and classes
  • Access modifiers
  • Constructors

 

 

 

Week 12 – (11/15)

Readings for this week:  10.1 - 10.5

 

Project 5 Assigned Monday 11/15

 

Topics:

  • Files
  • Reading and Writing Text files

 

 

 

Week 13 –(11/22)

Readings for this week: 10.6 – 10.8

 

No Class Wednesday or Friday – Thanksgiving Break

 

Topics:

  • Binary files
  • End of file

 

 

 

Week 14 – (11/29)

Readings for this week:  8.1 - 8.3

 

Project 5 Due Friday 12/3

 

Topics:

  • GUIs
  • Applets
  • Applications

 

Week 15 – (12/6)

Readings for this week:  None

 

Final Exam Friday 12/10

 

Topics:

  • GUIs continued
  • Class wrap-up