Incomplete Groups


During this course, you are asked to form a group with two elements.

To help with the creation of groups, we have created a page for incomplete groups, so that students can more easily find colleagues to work with. Please consider following this link to a Google Docs Spreadsheet and fill in your information. Contact any students that may have posted the information in the spreadsheet to form a group.

After forming a group, please consider updating the spreadsheet, with that information (either by removing your information from the table or by writing on the observations' column "Already has a group".

Attention: We DO NOT accept groups with a single element. (exceptional cases may be considered by the teachers and they must present a very good explanation).

Project 1


The first project assignment has been released! In order to test your project, a few tests will be made available by the end of the week (24th March).

  • Project 1
  • Project 1 tests (Version: 23/03/2019 16h45.  Note: If you have any question or detect any inconsistency with the tests, please contact your lab's teacher)

The project's due on 29th March!

Don't forget:

  • Javassist: 3.24.1-GA
  • Java 8: Version 1.8.0_202
  • Gradle file: Version 5.2.1
  • The presentation (should have no more than 10 slides) 
  • Murphy's Law

Project 1 - FAQ

1. Should I consider static variables when instrumenting the code? R: In the project's assignment we state that "(...) the Java application is instrumented at load-time to count all operations that read and write fields of the application's objects. (...)". In a sense, static fields are not considered part of an object and therefore do not need to be accounted for, since we are only concerned with the application's objects. However, we are not fundamentalists. Because this is the Advanced Programming course, we give you the liberty to handle this case as you please, as long as you provide a good argument for doing so. For instance, one can argue that, in a sense, static fields may be considered local to an object when accessed within the methods of a certain class. 
2. When executing the code of the project's assignment, I get a different output from the one exhibited.  Is it problematic to present an output like the one presented below?
0 1
1 1
Total reads: 8 Total writes: 1
java.lang.System -> reads: 2 writes: 0
pt.FunctionalCounter -> reads: 3 writes: 0
pt.ImperativeCounter -> reads: 3 writes: 1
R: No, it is not. As explained before, we are not fundamentalists. As a student of the Advanced Programming course, we aim that you are able to argue and stand for your decisions (note that they must make sense). We ask you for consistency throughout the project and for good arguments. 

Project 2 - Configurations


The second project assignment has been released! As you have been told in the theoretical classes, the project will involve Julia. As a result, the next laboratory classes will be dedicated to learning the core Julia concepts that will be necessary to solve the second project. In order to set up a proper working environment for the next laboratories, we advise you to:

1. Download Julia v1.1.0 from Julia's Official Webpage
2. Adopt a programming workflow and stick with it, for example, some of you may prefer to use more tailored IDEs, while others might prefer to use a combination of console/CLI and standard text editors. 
2.1 In the case you prefer the combination of console/CLI and text editors, you have finished the necessary configurations. Note: If you cannot run the command julia, please consider defining the environment variable JULIA_HOME.
2.2. In the case you prefer an IDE, we strongly suggest the Atom IDE, which can be downloaded at Atom's official page.
2.2.1. Download Atom and install it
2.2.2. To use Julia within Atom, it is also necessary to install the Juno IDE for Julia, in Atom. To install it, open Atom, go to File > settings > install and search for the uber-juno package you wish to install. (Note: this may take a while...)
2.2.3. After this, restart Atom and, in the top menus, you should be able to see a *Julia*  menu. 

Project 2 - Tests

The tests for the second project have been released. If you have any question or detect any inconsistency with the tests, please contact your lab's teacher.
The project's due on 17th May!

Don't forget:
  • Julia 1.1.0
  • The presentation (should have no more than 10 slides)
  • Murphy's Law
  • Don't leave rubbish files in the ZIP