Course code 07 67 4010 19
Number of ECTS points 6
Course title in the language of instruction
Component Programming
Course title in Polish Component Programming (Programowanie komponentowe)
Course title in English
Component Programming
Language of instruction English
Form of classes
Lecture Tutorials Laboratory Project Seminar Other Total of teaching hours during semester
Contact hours 30 30 0 60
E-learning No No No No No No
Assessment criteria (weightage) 0.40 0.60 0.00
Unit running the course Instytut Informatyki
Course coordinator dr inż. Marcin Kwapisz
Course instructors dr inż. Łukasz Chomątek, dr inż. Marcin Kwapisz
Prerequisites
Object Oriented Programming
Course learning outcomes
  1. EXPLAINS SPECIFICATIONS of the three-layer application architecture, i.e. data, application logic and user interface,
  2. DISCUSSES AND JUDGES usefullnes and compatibility of sample components, libraries or packages in a a chosen technology and IS ABLE TO IMPROVE them via overriding classes and methods and other object oriented methods.
  3. APPLIES TECHNICAL DOCUMENTATION of standard packages/libraries in a device-independent language, especially, the most frequently used components representing data structures and algorithms,
  4. RECOGNIZES BASIC MECHANISMS AND METHODS of communication between software and external data sources, e.g. databases,
  5. IS ABLE TO design hierarchies of classes and packages to develop a reusable components that complete requirements of the three-layer architecture and tasks assigned to each layer,
  6. CAN USE sample codes and components and create his/her own using libraries, packages and /or components, classes and methods to develop application logic and data layers,
  7. APPLIES packages and components with open-source techniques to create and develope application logic layer and data layer,
  8. ADAPTS CHOSEN MECHANISMS AND METHODS of communication in software projected and implemented according to the three-layer-architecture model using components
  9. CAN COMMUNICATE developed software with users and with external data sources using chosen components and libraries via grahical user interfaces (GUI) via ODBC,
  10. EVALUATES compatibility of own and other sample projects with the requirements of the three layer architecture of applications,
Programme learning outcomes
  1. design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the programme’s discipline
Programme content LECTURE 1. Introduction to programming in Java language: data types, statements, expressions, algorithms 2. Custom collections, iterator design pattern, interfaces and components. Unit testing in software development prosess 3. Generic types - generic programming in classess and interfaces, reusable code, modular design 4. Collections and maps in Java API - properties and variants: unmodifieble, synchronized. Data streams in collections, streams processing, elements of functional programming 5. Inheritance and access modifiers, overloading and overriding of methods, polimorphism 6. Standard object serialization. Components, multi-layered models, interfaces as a method for components binding 7. Standard interfaces in Java API - natural ordering in a sto of objects, object equality, hashing algorithms in collections and maps, sorting. Anonymous, inner and local classes. Comparatora as an example of functional interface, direct references to methods 8. Internationalization and localization of applications in computer systems. Support for i18n and l10n in Java API 9. Integrated development environments for Java development 10. Advanced operations on files and file systems, buffering, direct access to operating systems resources. 11. Java API Exceptions and custom exceptions hierachies 12. DI, IoC, observer, delegate, decorator, interceptor, factory design patterns on an example of CDI container (JBoss Weld), loose coupling of components. LABORATORY CLASSES Development of GUI application based on component architecture with TDD techiques that solves simple information technology problem: 1. Installation and configuration of tools supporting software development process and validating programming style 2. Iterative and recursive algorithms for examplary information technology problems 3. Development of custom classes and methods 4. Object class, its methods and overriding of toString(), equals(), hashCode() 5. Software development with Java API standard collections and maps. Variants of collection and maps with different features 6. Standard interfaces Serializable, Comparable, Cloneable and Comparator 7. Data persistence with standard and custom serialization 8. External libraries in software development 9. Internationalization and localization of applications. Correct formatting and parsing Strings to date/time, currency, percent, numbers. Formatting and parsing of string mesages 11. Exception handling and development of exception hierarchies 12. GUI implementation with usage of architectural and design patterns: mvc, adapter, listener, delegat, fabryka 13. Application of elements of functional programming
Assessment methods
Learning outcomes 1-10: Evaluation of laboratory exercises, evaluation of the practical laboratory test, evaluation of the written lecture exam

 
Grading policies The lecture grade is a grade acquired during an exam written in the form of quiz (multichoice answer test) on the Wikamp platform The laboratory grade is an average of grades from the laboratory test (50%) and laboratory exercises (50%) The final grade is the weighted mean of grades from the lecture exam (40%) and from the laboratory (60%) To take the exam a student must pass laboratory classes The laboratory classes and the exam is deemed passed if a grade is above 50%
Course content LECTURE 1. Introduction to programming in Java language: data types, statements, expressions, algorithms 2. Custom collections, iterator design pattern, interfaces and components. Unit testing in software development prosess 3. Generic types - generic programming in classess and interfaces, reusable code, modular design 4. Collections and maps in Java API - properties and variants: unmodifieble, synchronized. Data streams in collections, streams processing, elements of functional programming 5. Inheritance and access modifiers, overloading and overriding of methods, polimorphism 6. Standard object serialization. Components, multi-layered models, interfaces as a method for components binding 7. Standard interfaces in Java API - natural ordering in a sto of objects, object equality, hashing algorithms in collections and maps, sorting. Anonymous, inner and local classes. Comparatora as an example of functional interface, direct references to methods 8. Internationalization and localization of applications in computer systems. Support for i18n and l10n in Java API 9. Integrated development environments for Java development 10. Advanced operations on files and file systems, buffering, direct access to operating systems resources. 11. Java API Exceptions and custom exceptions hierachies 12. DI, IoC, observer, delegate, decorator, interceptor, factory design patterns on an example of CDI container (JBoss Weld), loose coupling of components. LABORATORY CLASSES Development of GUI application based on component architecture with TDD techiques that solves simple information technology problem: 1. Installation and configuration of tools supporting software development process and validating programming style 2. Iterative and recursive algorithms for examplary information technology problems 3. Development of custom classes and methods 4. Object class, its methods and overriding of toString(), equals(), hashCode() 5. Software development with Java API standard collections and maps. Variants of collection and maps with different features 6. Standard interfaces Serializable, Comparable, Cloneable and Comparator 7. Data persistence with standard and custom serialization 8. External libraries in software development 9. Internationalization and localization of applications. Correct formatting and parsing Strings to date/time, currency, percent, numbers. Formatting and parsing of string mesages 11. Exception handling and development of exception hierarchies 12. GUI implementation with usage of architectural and design patterns: mvc, adapter, listener, delegat, fabryka 13. Application of elements of functional programming
Basic reference materials
  1. Fowler M., Beck K., Brant J., Opdyke W., Roberts D.: Refactoring: Improving the Design of Existing Code, 1999 (2nd Ed. available in 2018)
  2. Horstmann Cay S. , Core Java Volume I--Fundamentals, 10th Edition, 2017 (11th Ed. available in 2018)
  3. Horstmann Cay S., Core Java, Volume II--Advanced Features, 10th Edition, 2017 (11th Ed. available in 2018)
  4. Booch G., Rumbaugh J., Jacobson I.:The Unified Modeling Language User Guide, 2nd Ed., Addison Wesley, 2005
  5. Martin R.C.: Clean Code:A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008
  6. Bloch J.: Effective Java, 3rd Ed., Pearson Education, 2017
  7. Java Language Specification https://docs.oracle.com/javase/specs/
  8. Java Community Process http://jcp.org
Other reference materials
  1. https://gluonhq.com/products/javafx/
  2. http://code.makery.ch/library/javafx-8-tutorial
  3. http://docs.oracle.com/javase/8/javase-clienttechnologies.htm
  4. http://www.mkyong.com/all-tutorials-on-mkyong-com/
  5. https://dzone.com/refcardz/javafx-8-1
Average student workload outside classroom
90
Comments
 
Updated on 2021-05-30 18:41:02
Archival course yes/no no