CS 0401Intermediate Java Programming

Summer Term: 2157

 

 

Class

Lab

Lab

Time:

12:30 PM - 2:15 PM

2:30 - 4:20 PM

12:30 - 2:20 PM

Days:

MW

M

T

Room:

5129 Sennott Sq.

5502 Sennott Sq.

5502 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: 10:30am—noon

Thu: 1:00pm – 2:30pm

 

Lab TA: Lei Zhao

 

Grading TA: Longhao Li

Office:

6514 Sennott Sq.

 

Office:

5802 Sennott Sq.

Email:

lez21@pitt.edu

 

Email:

lol16@cs.pitt.edu

Office Hours:

Wed: 9:00am – noon

 

Office Hours:

Tue: 9:30am – 11:00am

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, Fifth Edition. Addison Wesley, 2012. ISBN-10: 0132855836

Class Policies

Exams:  There will be two midterms and a final. The exams will be closed book/notes. The final exam will be the last day of class 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: 5/11/2015 - 5/13/2015

Readings for this week: Chapters 1 & 2

 

Topics:

·         Intro to the Course

·         Java Syntax Basics

o   Keywords

o   Identifiers

o   Data Types

o   Variables

o   Literals

o   Expressions

o   Operators

 

Week 2: 5/18/2015 - 5/20/2015

Readings for this week: Chapter 3

 

Monday, May 18: Add/Drop Ends

 

Topics:

·         Java Syntax Basics (continued)

o   Precedence & Associativity

o   Booleans and conditionals

o   References

o   Input & Output

o   Blocks

o   Comments

·         Java Control Structures

o   If/else if/else

 

Week 3: 5/25/2015 – 5/27/2015

Readings for this week: Chapters 4 & 5

 

Monday, May 25: Memorial Day – No Class

 

Topics:

·         Java Control Structures (continued)

o   While and for loops

o   Switch/case statements

o   Break & continue

·         (Static) Methods

o   Parameter passing

o   Scope

Week 4: 6/1/2015 – 6/3/2015

Readings for this week:  Prepare for the midterm exam

 

Wednesday, June 3: First Midterm Exam

 

Topics:

·         Review for the midterm exam

 

Week 5: 6/8/2015 - 6/10/2015

Readings for this week: Chapter 6

 

Topics:

·         Classes

o   Abstraction

o   Encapsulation/Data hiding

o   Constructors

o   Accessors & Mutators

 

Week 6: 6/15/2015 - 6/17/2015

Readings for this week:  Chapter 7

 

Topics:

·         Arrays

o   Indexing

o   As Objects

o   Modifying/ Resizing

o   Search

o   Two-dimensional

·         ArrayLists

 

Week 7: 6/22/2015 - 6/24/2015

Readings for this week:  Chapter 7

 

Topics:

·         Basic Algorithms

o   Sorting

o   Binary Search

 

Week 8: 6/29/2015 - 7/1/2015

Readings for this week: Chapters 8 & 10

 

Topics:

·         Object-Oriented Programming

o   Inheritance

o   Polymorphism

§  Method overloading

§  Subclassing

o   Abstract classes/Interfaces

Week 9: 7/6/2015 - 7/8/2015

Readings for this week:  Chapter 9

 

Monday, July 6: Monitored Withdrawal Deadline

 

Wednesday, July 8: Second Midterm Exam

 

Topics:

·         Review for the midterm exam

·         Java Class Library

o   Text processing

 

Week 10: 7/13/2015 - 7/15/2015

Readings for this week:  Chapters 12 & 13

 

Topics:

·         Java Class Library (continued)

o   Graphical User Interfaces

§  Components

§  Event-driven programming

 

Week 11: 7/20/2015 - 7/22/2015

Readings for this week:  Chapter 15

 

Topics:

·         Generics in Java

·         Recursion

 

Week 12: 7/27/2015 - 7/29/2015

Readings for this week:  Prepare for the final exam

 

Wednesday, July 29: Final Exam

 

Topics:

  • Review for the final exam