Course Overview
This course covers the elements of object-oriented programming
and the Java Programming Language: Primitive data types,
control structures, methods, classes, arrays and strings,
inheritance and polymorphism, interfaces, creating user
interfaces, applets, exceptions and data streams. Laboratory
course. 4 cr.
Prerequisites
Some prior knowledge of programming is assumed. General
experience in working with a computer system, its operating
system and applications is necessary. Internet browsing
skills will be useful.
Learning Objectives
- Understanding of the basic concepts of computer
science and programming with expressions, flow control
constructs, functions, and classes;
- Proficiency in programming in the Java language;
- Knowledge of the object oriented approach in software
engineering: the principles of encapsulation, information
hiding, inheritance, and polymorphism
- Understanding of the implication of the object oriented
approach for program quality and information assurance.
Methods of Instruction
The method of instruction includes both face-to-face and
web-based components:
The face-to-face component includes
- Lectures that are typically used for presenting
new material; a variety of teaching approaches are
used in the lectures, including traditional problem
solving on the blackboard, PowerPoint slide presentations,
video, interactive learning with Personal Response
Systems;
- Discussions of exercises, homework and reviews for
exam and projects;
- Laboratory sessions for initial tutorials in the
software environment (e.g. how to edit, compile, run
programs in a specific Integrated Development Environment),
or work with technologies not available on an individual
basis, (e.g. hand, signature, fingerprint recognition
in the biometrics lab).
- Teamwork on projects and in-class presentation and
discussion of the project results.
The web-based component is managed through a course companion
web site in CourseInfo that includes
- lecture notes,
- references, library and other institutional resources,
links to Internet resources;
- homework assignments and solutions;
- on-line homework submission;
- grade management: remote private access to grading
information for the student, spreadsheets and grade
statistic functions for the instructor;
- a wealth of communication types: chat (individual
or groups), threaded discussion, e-mail (individual
or groups), bulleting board;
Lecture material should be reviewed before the next class
since any questions on old material will be addressed
only at the beginning of class. The reading assignments
in the textbook should be done before the material is
covered in lecture, and then reviewed afterwards. All
assignments must be legible, well formatted, on time and
complete.
Evaluation and Grading
You will have to do homework assignments to help you master
the material. You will also have to read the textbook
in advance to prepare for each lecture and to be ready
to discuss the issues related to the current class topic.
Homework assignments can be e-mailed to rom@bu.edu
There will be two exams. If any grading criteria event
will be missed it will be the responsibility of the student
to arrange with the professor a mutually agreeable schedule
for completion of work.
If any work is to be completed beyond the scheduled dates
of this course the student must negotiate a Boston University "Contract for an Incomplete Grade" with
the professor.
Any grading event not met and not covered by the above
two points will receive a "0"
Grades will be based on:
15% Homework assignments (About 10 assignments)
5% Class participation
35% Midterm exam
45% Final exam
Class Description
- (Chapter
1 - Introduction to Computers and Java Objects)
Computer Systems, Common Hardware Components, Computer
Physical Organization, Types of Memory, Main Memory,
Auxiliary Memory, Memory Sizes, Character Data,
Whole Numbers, Types of Programs, Programming Language Hierarchy, Programming
Languages, Instruction Set, Machine Language, Assembly Language, User Interfaces,
Compilers vs. Assemblers, Interpreters, What is Java?, History of Java, Java's
Architecture, Applications vs. Applets, Source Code and Byte Code, Java Virtual
Machine, Java API, Java Development Kit, IDE, Commercial IDEs, Shareware IDEs,
Object Oriented Programming, Features of an Object, Java Application Components,
Structure of main() Method, Sample Application, Comments, Object Example, Editing
a Java Program, Compiling a Java Program, Executing a Java Program, Creating
Documentation Files, Disassembler, Object Oriented Programming, Encapsulation,
Inheritance, Polymorphism, Applets, Applet Components, Import Statements, Class
Instances, HTML Page to Execute Applet, Applet Viewer, View of Applet, Program
with Input and Output, Command Line Data Input, Data Input from Console, Exceptions,
Applet paint() Method, Data Input using TextField, Applet init() Method, actionPerformed()
Method.
- (Chapter
2 - Primitive
Types, Strings, and Interactive I/O)
Simple Java Program, Parameter Input, Application Program, Variables, Identifiers, Reserved Words, Assignment Operator, Initializing Variables, Changing Value of a Variable, Data Types in Java, Primitive Data Types, Boolean Type, Char Type, Character Representations, Escape Characters, byte and short Types, int and long Types, Integer Constants, float and double Types, Imprecision of Floating Point Numbers, Floating Point Constants, Arithmetic Operations, Integer Operators, Modulo Operator, Double and Float Operators, Arithmetic Operations, Java Expressions, Shortcut Assignment Operators, Mixing Numeric Types, Implicit Conversions,
Casting, Explicit Casting, Truncation, Casting char to int, Unary Operators, Increment, Decrement, String Literals, String Variables, Indexing Characters Within a StringConcatenating Strings, String Object Methods, Named Constants, The static Keyword, Java Naming Conventions, Relational Operators, Logical Operators, Operator Precedence,Data Input, Data Input from Command Line, Data Input from Console, Exceptions, Separate Class for Input, Input Errors,Input Widow, System.exit(0), Problem Solving Approach, Description of Problem, Algorithm, Sample Run, Programming Errors, Compilation Error, Runtime Error, Logical Error.
- (Chapter
3 - Flow
of Control)
Selection Structures, if and if .else, Using Multiple if Statements, Compound
Statements, Nested if..else Statements, Using Braces, String Equality, Using
== with Strings, equals() Method, equalsIgnoreCase(), Conditional Expressions,?Conditional
Operator, StringTokenizer, Switch Statement, Precedence with Boolean Expression,
Iteration, Conditional Loops, While Loop, Flow of Control in while Loop, Event
Handling in Applet, Do-While Loop, Flow of Control in do-while Loop, Infinite
Loops, Counter Controlled Loops, for Loop, Nested for Loops, Comma Operator,
break and continue Statements, Using break to Exit Infinite Loop, Input from
a Separate Class.
- (Chapter
4 - Defining
Classes and Methods)
Objects,Class With Method, Separate Compilations, Methods, Method Headings, Method Body, Instance Variables, Using Methods, Calling a Method, new Operator, Passing a Parameter, Access Modifiers, Modifiers Static and Final, Local Variables, ScopeBlocks, Scope Rules, Javadoc With Methods, Overloading Methods, Accessor Methods, Mutator Methods, Static Methods, Pass by Reference, Modifying Formal Parameters, Introduction to Recursion
- (Chapter
5 - More
About Objects and Methods)
Abstractions, Object Oriented Languages, Classes, Objects, Instantiation, Constructors, Overloaded Constructors, Initialization, Modifiers, Public and Private Modifiers, Static Modifier, Instance and Class Variables, The Final Modifier,Assignment Statements and Objects, Memory Leaks and Garbage Collection, Passing Objects to Methods, Scope of Variables, Local Variables, Using Objects in Program Design, Packages, Java API, Creating Packages, Package Names, Using Packages, Java.lang.Math class, Wrapper Classes, Class Containment,Inheritance, Superclass and Subclass, Protected Modifier, Final Modifier, Keyword super, Keyword this.
- (Chapter
6 - Arrays)
Arrays, Array Declarations, Creating Arrays, Arrays in Memory, Initializing an Array, Default Initialization, Array Subscripting, Index Out of Bounds, Arrays as Instance Variables,Arrays with Object Elements, Assignment and Equality Operators, Copying Arrays, Array Equality, Passing Arrays as Parameters, Linear Search, Binary Search, Bubble Sort, Quick Sort, Partition() Method, Multidimensional Arrays, Multidimensional Array Example, Tic-Tac-Toe, Input via Graphic User Interface, The Arrays Class, Arrays.binarySearch(), Arrays.equals(), Arrays.fill(), Arrays.sort(), Overriding Methods.
- (Chapter
7 - Inheritance)
Inheritance and Core Classes, The Class Object, Methods of Class Object, Overriding toString(), Overriding equals(), instanceof Operator, Casting Objects, Casting Superclass Objects, Casting and Overriding, Casting Static Methods, Cloning, Shallow and Deep Copies, Making Objects Cloneable, Using Default clone(), Overriding clone(), Abstract Classes, Extending an Abstract Class, Abstract Methods, Interfaces, Implementing Interface, Polymorphism, Inner Classes, Local
Classes, Anonymous Classes, The Class Random, The Class System, The Class Date, The Classes, Calendar and DateFormat, Deprecated Method
- Midterm
- (Chapter
8 - Exception
Handling)
Introduction to Exceptions, Exception Handling, Java Exception Handling Mechanism, Exception Specifications, Exception Types, Errors and Exceptions, RuntimeException Class,?Throwing Exceptions, Catching an Exception, The try-catch Block, Throwable Methods, Separate try-catch Blocks, Locating a Handler, Exceptions and Inheritance, Exceptions in GUI Applications, Creating Exception Classes, Exception Matching, Exception Restrictions, Cleaning Up With Finally, Constructors, Validation, Performance Issues.
- Object Oriented Approach:
Encapsulation, Information Hiding, Inheritance, and Polymorphism. Designing scalable,
maintainable, reliable and secure software. Program Quality and Information Assurance.
(Chapter 9 - Streams and File I/O)
Input and Output, Stream Classes, The File Class, InputStream, Reader, OutputStream, Writer, Filter Streams, Data Streams, Buffered Streams, Object Streams, Random Access
- (Chapter
10 - Dynamic
Data Structures)
The String Class, The StringBuffer Class, The StringTokenizer Class, Command Line Arguments, Collections, The Vector Class, Enumeration and Iterators, The Hashtable Class, The Stack Class, Designing Your Own Collection, JDK 1.2 Collections, Collections and Maps, The Collection Interface, The Iterator Interface, The List Interface, The ListIterator Interface, The Set Interface, The HashSet and TreeSet, Comparator Interface, Sorting and Searching, The Map Hierarchy, The HashMap and TreeMap
- (Chapter
12 - Window Interfaces Using Swing Objects, Chapter 14 - More
Swing Objects)
Abstract Window Toolkit (AWT), Introduction to Swing, Graphic User Interfaces, Event Driven Programming,
Windows, JFrame Methods, Event Handling, Event Class Hierarchy, Event Registration,
Listener Adapters, Subclasses of JFrame, Layout Managers, Flow Layout, Grid Layout, Border Layout, JPanel Class, Nested Containers, Buttons, Text Areas, Text Fields, Password Fields, Labels
- (Chapter
13 - Applets
and HTML)
Java Applets, Applet Class Hierarchy, Applet Execution Sequence, Applet Methods, Applet in Applet Viewer, The Applet HTML Tag, HTML Tags, Head Section Components, Formatting with Headings, Preformatted Blocks, Fonts, Color, Hyperlinks, URLs, Inline Graphics, Applet Parameters, Applets with Graphics, Interactive Applets, Converting an Applet to an Application, Converting an Application to an Applet, Mouse Events, Applet Viewer vs. Browser, Jlabels, Tool Tips, Borders, Icons, Swing Buttons, Button Groups, Sliders and Progress Bars, Dialog Windows, JEditorPane Class, JEditorPane Methods.
- (Chapter
15 - Graphics
Objects) Graphics in Java, Screen Coordinates, Canvas Class, The Graphics
Class, Some Methods of Class Graphics(), Drawing Rectangles, Drawing Lines,
Drawing Rounded Rectangles, Drawing Ovals, Drawing Arcs,?Drawing Polygons,
The Font Class, Font Constants and Constructors, Selected Font Methods, The
FontMetrics Class, FontMetrics Methods, Color Class, Defining Colors, RGB
Scheme, JcolorChooser Dialog Window, Animation
- Final exam
Lab
MET College operates four pc laboratories as a resource
for our students and faculty. The laboratories include
64 PC's running Windows 2000, Linux or UNIX. Each lab
has a LaserJet networked printer, scanner and LCD projector.
The computer labs hours are:
Fall and Spring Semester: Daily: 10:00am to 11:00pm
Summer Term: Mon-Thu: 4:00 to 10:00pm, Fri-Sun: 12:00
to 6:00pm
Labs are closed during all holidays, intersession and
spring break. Please note that lab rooms get reserved
for classes during certain hours.
View lab reservation calendar.
All labs have the following software: Adobe Acrobat
5.0, Photoshop 5.0, MS Office2000 Pro, IE 6.0, WS-FTP,
McAfee VirusScan.
Lab 1 (Room 264)
13 Pentium 1,6GHz, 512MB RAM PCs
SW: VisualStudio.NET, Oracle 9i, Erwin 4.0, SPSS v.11
Lab 2 (Room 265)
Telecom lab has 2 UNIX, 10 LINUX, 7 Windows2000 machines.
Lab 3 (Room 266)
17 Pentium 933MHz, 512MB RAM PCs
SW: Oracle9i, Front Page 2000, Project2002, Macromedia
StudioMX.
Lab 4 (Room 267)
17 Pentium 1.7GHz, 512MB RAM PCs
SW: FrontPage2000, Project2002, SAS, Oracle 9i, Macromedia
StudioMX, Micros Fidelio
Homework
Assignments are based on the lecture material as well
as additionally assigned readings. The problems include
a "paper and pencil" part that requires short answers
to concept questions, writing or testing segments of
code (without necessarily running the coder), and implementing
entire programs. Detailed submission instructions are
provided at the CourseInfo web site.
References
Required Text
Savich, Walter. JAVA An Introduction to Computer Science & Programming,
Prentice Hall, 2004 (Third Edition)
Additional Reading
There will be additional handouts and supplementary
readings.
Academic Honesty
The course is governed by the Academic Conduct Committee
policies regarding plagiarism (any attempt to represent
the work of another person as one's own). This includes
copying (even with modifications) of a program or segment
of code. You can discuss general ideas with other people,
but the work you submit must be your own. Collaboration
is not permitted.
Instructor Information
Instructor: Rom Skvarcius
Office hours: Monday, Wednesday 3:00 - 5:30 p.m. (Main
Office)
Tuesday 3:30 - 5:30 p.m. (Downtown Center)
Office Address:808 Commonwealth Avenue, Room 263 Boston,
MA 02215.
Telephone: (617) 358-0009
E-mail: rom@bu.edu
Fax: 617-353-2367
|