MET CS 232 INTRODUCTION TO COMPUTER SCIENCE WITH JAVA

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 

  1. (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.
  2. (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.
  3. (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.
  4. (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
  5. (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.
  6. (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.
  7. (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
  8. Midterm
  9. (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.
  10. 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
  11. (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
  12. (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
  13. (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.
  14. (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
  15. 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


Department of Computer Science
Boston University Metropolitan College
808 Commonwealth Ave, Room 250, Boston, MA. 02215.  Phone: 617 353 2566, Fax: 617 353 2367, Email: csinfo@bu.edu