Information about course

Semester:summer 2017/2018
Lecture:10:40 Mo, S5
 14:00 Mo, S5 (in English)
Practicals:17:20 Th, SU2, odd/even week
 12:20 Mo, SU2 odd week (in English)
Hours/week:2/1 Zk/Z
Lecturer:Petr Hnětynka
email: hnetynka _at_ d3s.mff.cuni.cz
Code:NPRG021
Previous year:summer semester 2016/2017

Practicals

  • Practicals are in the Unix computer lab
  • Sign yourself to a practical using the information system
    • who is not signed to a practical within first three weeks of the semester will not receive "zápočet"
  • Information for those who do not want to attend the practicals
    • if you do not want to attend practicals, you can also sign yourself to the "virtual" practical
    • for the "virtual"practical, there are the same requirements and deadline as for the "regular" ones
  • if you repeat the course the requirements you fulfilled previous year can be accepted (but only in the scope of a single study)
    • explicitly write about it to the teacher of the particular practical (within first three weeks of the semester)
    • if you did not write the home project program, the topic is not automatically accepted
      • but it is not necessary to think out a new one; you can propose the original one

Exam and "zápočet"

  • Exam is a written test
  • To obtain "zápočet" it is necessary to create a home project program and successfully pass the practical programming test
  • Next, there will be three home-works
    • It is necessary to obtain at least 150 of points from them
  • Practicals attendance is mandatory! If you miss more than 2 practicals, you have to obtain at least 210 from the home-works
  • The home project has to non-trivially exploiting a covered technology.
  • The project has to be appropriately complex.
    • The topic of the project has to be agreed (by email) with the lecturer till Friday 25th May 2018. "Agreed" means that the topic is suggested by a student and confirmed by the lecturer.
    • The project should be submitted till the end of June; the latest deadline is Friday 21nd September 2018 12:00 (noon).
      • The project is submitted by email; only if it is necessary the project is shown personally.
      • The project is submitted as a zip archive, which contains:
        • sources,
        • build.xml file for ant (allows compilation, javadoc generation, and execution of the project) ,
          • Maven can be used too
        • user documentation (as a plain-text or html or pdf) so the project can be launched and tested,
        • explicitly specified version of Java, which is necessary for compilation and execution (ideally specified directly in build.xml)

Course synopsis

  • In-depth view of the Java language
    • Overview and history of the Java platform. Tips and tricks with the Java type system.
    • Reflection API
    • Generics, annotations
    • ClassLoaders, Security
  • Distributed technologies: RMI,...
  • Component model JavaBeans
  • Java Enterprise Edition: EJB, Spring,...
  • Java Micro Edition: Java for mobile and embedded systems, CLDC, MIDP, MEEP
  • RTSJ
  • Other Java technologies: Java APIs for XML, JDBC, JMX,...
  • Other languages compiled to Java bytecode (Kotlin,...)
  • Android

Homeworks

  • Homeworks will be posted here and announced during the lecture

Slides and examples

Reflection API19.2.2018CZEN
Reflection API (lecture 1) ZIP 
Plugins (lecture 1) ZIP 
Proxies (lecture 1) ZIP 
Practicals 1 CZEN
History and future, Generics, Annotations26.2.2018CZEN
Annotations - unit testing example (lecture 2) ZIP 
Annotations - compiler processing (lecture 2) ZIP 
ClassLoaders, Bytecode, JNI, JNA5.3.2018CZEN
Classloaders example (lecture 3) ZIP 
Service loader example (lecture 3) ZIP 
JNI example (lecture 3) ZIP 
JNA example (lecture 3) ZIP 
Practicals 2 CZEN
Modules12.3.2018CZEN
RMI, Security19.3.2018CZEN
RMI examples (lecture 5) ZIP 
Security examples (lecture 5) ZIP 
Practicals 3 CZEN
JavaBeans26.3.2018CZEN
Java 1026.3.2018CZEN
JDBC, Hibernate, XML API, Scripting API9.4.2018CZEN
Practicals 4 CZEN
JMX16.4.2018CZEN
JMX examples (lecture 8)16.4.2018ZIP 
AspectJ, JEE23.4.2018CZEN
Practicals 5 CZEN
JME30.5.2018CZEN
RTSJ, LeJOS, Android6.5.2018CZEN
Practicals 6 CZEN
Other JVM languages14.5.2018CZEN
Kotlin21.5.2018CZEN
Practicals 7 CZEN

Links