Programming 3
VIIIAB00 | Computer Engineering BSc | Semester: 3 | Credit: 5
Objectives, learning outcomes and obtained knowledge
The goal of the course is to deepen students' understanding in the field of object orientation (Java programming language) and the use of class and function libraries (collections, IO, threads, XML handling, graphics and GUI). The course builds heavily on C and C++ skills gained in courses Basics of programming 1 and 2. The programming language environment of the course is Java. Laboratories provide practical exercises in the fields introduced by the lectures.
Synopsis
Lecture
1. Basics of Java. Introduction, types, operators, statements. Objects, classes, interfaces, packages. Exception handling, coding style.
2. Java I/O. System Class. I/O Basics. I/O filters. Special classes: pipe, file. Serialization.
3. Utilities.(Scanner, Random, BigInteger, BigDecimal, text processing).
4. Java generics, generics and inheritance. Comparison to C++ generic solutions. Heterogeneous collections, casting, template.
5. Java collections. Collection framework: Collection, Iterator, List, ListIterator, Set, SortedSet, Map, SortedMap. Handling of collections (java.util.Collections).
6. UML and Java. Associations, aggregations, their implementation and notation. C++ flashback (composition, destructor, deep and shallow copy, cloning, copy constructors).
7. Thread handling. Mutual exclusion, synchronization, signalling. Thread safe collections, special concurrent classes (java.util.concurrent)
8. Java GUI basics. Components and containers. Layouts. Event-handling. Low level graphics (java.awt.Graphics)
9. Swing components: menu, dialogs, etc. MVC in swing, JList, JTable, JTree.
10. Automatic and unit testingin Java, JUnit.
11. XML processing in Java: SAX, DOM, JDOM.
12. Logging, log4j, logging levels. Internationalization, localization.
13. Outlook: object-relational mapping in JPA, networking, RMI.
Laboratory
1. Basics of eclipse, intellisense, help, projects.
2. Hello world, command line compilation, eclipse and Java, package handling.
3. Java inheritance, exceptions: C++ heterogeneous collection test problem solved in Java
4. Java IO. Reading from files, handling the file system, printouts, serialiazation, command line arguments.
5. Java Util: collections, sorting, iterators.
6. Java-UML connection, UML modelling tools and code generation
7. Java thread handling: producer-consumer, synchronization.
8. Swing basics. Simple swing example: caesar coder.
9. Swing MVC: JTable task: sorting, display, special rendering.
10. Low level graphics: simple vector graphics.
11. JUnit task. Creating unit tests for a predefined Java source code.
12. XML tasks: processing, generation.
13. Home work presentation.
BME-MIT