CS 0401 – Intermediate 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: |
Instructor: Jonathan Misurda |
|
Office: |
6203 SENSQ |
Email: |
|
Office Hours: |
Mon, Wed: 11:00am–noon |
Lab UTA: |
Shelley Goldberg |
Reed Armstrong |
|
Grading TA: Daphalapurkar, Ameya Bhalchandra |
|
Office: |
SENSQ 6506 |
|
Office: |
SENSQ 6148 |
|
Email: |
|
Email: |
|||
Office Hours: |
W: 3‐5 |
M: 2‐4; H: 4‐6 |
|
Office Hours: |
11:30am – 2:30pm |
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.
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.
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.
[Required Text]
Gaddis, Tony. Starting Out with Java, From Control Structures through Objects, Sixth Edition. Addison Wesley, 2016. ISBN-10: 0-13-395705-5
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.
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 |
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.
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
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
|