CS 0401Intermediate Java Programming

Spring Term: 2164

 

 

Class

Lab

Lab

Time:

9:30 AM 10:45 AM

12:00 1:50 PM

6:00 7:50 PM

Days:

MW

F

H

Room:

5129 Sennott Sq.

6110 Sennott Sq.

6110 Sennott Sq.

Webpage:

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

Contact Information

 

Instructor: Jonathan Misurda

Office:

6203 SENSQ

Email:

jmisurda@cs.pitt.edu

Office Hours:

Mon, Wed: 11:00am–noon
Tue, Thur: 10:00am–11:00am

 

Lab UTA:

Shelley Goldberg

Reed Armstrong

 

Grading TA: Daphalapurkar, Ameya Bhalchandra

Office:

SENSQ 6506

 

Office:

SENSQ 6148

Email:

sag109@pitt.edu

rma42@pitt.edu

 

Email:

ABD51@pitt.edu

Office Hours:

W: 3‐5

M: 2‐4; H: 4‐6

 

Office Hours:

11:30am – 2:30pm

Description

Computers are ubiquitous tools that have and will continue to shape our world. In common usage for only half of a century, in their short existence they have already revolutionized science, art, business, and entertainment. However, at their core, computers are simple machines that can only do basic mathematical computations (addition, subtraction, multiplication, division, etc.) and make decisions based upon fundamental rules of logic. How then, can such basic operations be utilized to make something so powerful?

The act of programming a computer requires us to translate a problem we wish to solve, be it a math problem, a business problem, or even a video game, into a representation that the computer and its simple operations can manipulate. This requires at least two steps:

In this class, we will choose to describe our computer programs in a programming language called Java. Java is a programming language built around the creation and management of objects in terms of the data they contain and the code that acts upon them. There are many Object-Oriented Programming Languages, but Java is a good choice for both learning and real-life use. The skills that we learn in Java will be easily transferrable to other programming languages and even other programming paradigms.

Prerequisites

This class is meant to be a second (or later) class in programming. The prerequisite is prior programming experience. That can be in any language since most share enough in common, if not syntactically, then at least in terms of the act of programming. Prior experience in Java is a plus, but any reasonable language will do, and the beginning of the term will be a quick introduction to the basics of the Java language.

This means that the course will not teach you about the basic ideas of variables or control structures and how to use them to express basic ideas as code. Rather, we will focus on the specific task of taking computational thinking and expressing it in the Java programming language.

If you have any questions about the prerequisite material for the course, please ask at the beginning of the term.

Course Purposes and Goals

At the end of this course, students will be able to:

·         Write programs in the Java programming language that utilize objects from the Java class library as well as custom-objects that model the problem being solved.

·         Understand and utilize the tools necessary to create and run a Java program, understand the output when errors occur, and to solve errors at compile time and run time using the skill of debugging.

·         Use and apply simple data structures such as arrays and similar collections to hold aggregate data.

·         Develop and appreciate basic algorithms such as searching and sorting.

·         Have the foundation necessary to proceed to further courses in the computer science/engineering and information science fields.

Textbooks

[Required Text]

Gaddis, Tony. Starting Out with Java, From Control Structures through Objects, Sixth Edition. Addison Wesley, 2016. ISBN-10: 0-13-395705-5

Class Policies

Exams:  There will be two midterms and a final. The exams will be closed book/notes. The final exam will be Wednesday, April 27, 2016, from 8:00-9:50am in the normal classroom. Cheating on exams will not be tolerated.  Anyone caught cheating will be given a zero for the test or for the course and reported to the department following University procedures.

At the risk of seeming like a Luddite, smart watches will be forbidden on test days. Please keep them someplace out of sight for the duration of the exam.

Projects:  There will be 5 out-of-class assignments given.  These are to be completed in the given time (no extensions will be given without a valid excuse. LATE WORK IS NOT ACCEPTED. Contact me before the deadline for clarifications.)  These are meant to be your own work; anyone found to be collaborating will be disciplined in accordance to University policy.  Cheating means (but is not limited to): using code from previous terms, other universities, your friends, finding it on the Internet, getting help from unapproved forums, or outsourcing it.

We will be using Moss, a tool from Stanford for determining inappropriate collaboration.

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

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

Due to this class being taken by students with a wide-variety of backgrounds, I will be doing my best to ensure a comfortable classroom environment for those with less programming experience. If your participation in terms of answers or questions are well beyond the level we are currently at, please keep them to after class, office hours, or emails. Expect gentle (and, if necessary, not-so-gentle) reminders of this throughout the term.

Grading

Your grade will be based upon 3 exams, 5 projects, labs and quizzes (the lowest one of which will be dropped), and participation:

First Midterm

15%

Second Midterm

15%

Final Exam

15%

5 Projects

40% (8% each)

Labs and Quizzes

10%

Participation

5%

Total

100%

 

The scale for the term will be:

Percentage

100

95

90

89

85

80

79

75

70

69

65

60

< 60

Letter

A+

A

A-

B+

B

B-

C+

C

C-

D+

D

D-

F

Disability Resources and Services:

If you have a disability for which you are requesting an accommodation, you are encouraged to contact both your instructor and Disability Resources and Services, 216 William Pitt Union, (412) 648-7890, as early as possible in the term. DRS will verify your disability and determine reasonable accommodations for this course.

Academic Integrity

Students are expected to comply with the University of Pittsburgh’s Policy on Academic Integrity. Any student suspected of violating this obligation for any reason during the semester will be required to participate in the procedural process as outlined in the University Guidelines on Academic Integrity. For further information see: http://www.pitt.edu/~provost/ai1.html


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: 1/6/2016

Readings for this week: Chapter 1

 

Topics:

·         Intro to the Course

·         Java Syntax Basics

o   Keywords

o   Identifiers

o   Data Types

 

Week 2: 1/11/2016 – 1/13/2016

Readings for this week: Chapter 2

 

Topics:

·         Java Syntax Basics (continued)

o   Variables

o   Literals

o   Expressions

o   Operators

o   Precedence & Associativity

o   Booleans and conditionals

o   References

 

Week 3: 1/18/2016 – 1/20/2016

Readings for this week: Chapters 3 & 4

 

Monday, January 18: MLK Day – No Class

 

Tuesday, January 19: Add/Drop Ends

 

Topics:

·         Java Syntax Basics (continued)

o   Input & Output

o   Blocks

o   Comments

·         Java Control Structures

o   If/else if/else

o   Switch/case statements

o   While and for loops

o   Break & continue

 

Week 4: 1/25/2016 – 1/27/2016

Readings for this week: Chapter 5

Topics:

·         Java Control Structures (continued)

o   While and for loops

o   Break & continue

·          (Static) Methods

o   Parameter passing

 

Week 5: 2/1/2016  –  2/3/2016

Readings for this week: Chapter 6

 

Topics:

·         Scope

·         Classes

o   Abstraction

o   Encapsulation/Data hiding

 

Week 6: 2/8/2016 - 2/10/2016

Readings for this week:  Prepare for the midterm exam

 

Wednesday, February 10: First Midterm Exam

Topics:

·         Classes (continued)

o   Constructors

o   Accessors & Mutators

 

Week 7: 2/15/2016 – 2/17/2016

Readings for this week:  Chapter 7

 

Topics:

·         Arrays

o   Indexing

o   As Objects

o   Modifying/ Resizing

o   Search

o   Two-dimensional

 

Week 8: 2/22/2016 – 2/24/2016

Readings for this week: Chapter 7

 

Topics:

·         ArrayLists

·         Basic Algorithms

o   Sorting

o   Find

 

Week 9: 2/29/2016 – 3/2/2016

Readings for this week:  Chapter 7

 

Topics:

·         Basic Algorithms

o   Binary Search

o   Min, max, average

 

Spring Break: 3/7/2016 – 3/9/2016

 

 

Spring Break – No classes

 

 

Week 10: 3/14/2016 – 3/16/2016

Readings for this week:  Chapter 8

 

Wednesday, March 16: Monitored Withdrawal Deadline

 

Topics:

·         Object-Oriented Programming

o   Inheritance

o   Polymorphism

§  Method overloading

§  Subclassing

 

Week 11: 3/21/2016 – 3/23/2016

Readings for this week:  Prepare for the Second Midterm Exam

 

Wednesday, March 23: Second Midterm Exam

 

Topics:

·         Object-Oriented Programming (continued)

o   Polymorphism

§  Abstract classes/Interfaces

 

Week 12: 3/28/2016 – 3/30/2016

Readings for this week:  Chapter 9

 

Topics:

·         Java Class Library

o   Text processing

 

Week 13: 4/4/2016 – 4/6/2016

Readings for this week:  Chapter 11

 

Topics:

·         Exceptions and Error Handling

Week 14: 4/11/2016 – 4/13/2016

Readings for this week:  Chapters 12 & 13

 

Topics:

·         Java Class Library (continued)

o   Graphical User Interfaces

§  Components

§  Event-driven programming

 

Week 15: 4/18/2016 – 4/20/2016

Readings for this week:  Chapter 16

 

Topics:

·         Generics in Java

·         Recursion

 

Finals Week

Readings for this week:  Prepare for the final exam

 

 

 

Wednesday, April 27, 2016, from 8:00–9:50am in the normal classroom