The topics covered in this course are the subject of a large amount of online material, some of which is high quality. We encourage you to read widely, use diverse resources, and adopt a learning style that suits you.
Java#
Waterloo University has made available a wonderful tool for understanding the basics of Java. This tool allows you to paste in basic Java programs and watch them execute step-by-step. It illustrates the underlying data structures and allows you to step backwards and forwards in time. We highly recommend that you use this tool to help you understand what is going on when a Java program executes.
There’s a nice cheatsheet contained in an appendix to Robert Sedgewick and Kevin Wayne’s Introduction to Programming in Java.
Oracle has developed a rich set of Java tutorials. We will use the Learning the Java Language trail as part of the rapid introduction to Java in the first few lectures of the course. We cover a lot of ground at the start of the course, so you may find it helpful to work through the tutorials in your own time. You may also find the larger set tutorials useful beyond the first few weeks; they are generally well designed and thorough. (Note that the Swing tutorial is not relevant to this course because we are using Java FX, which replaces Swing.) You will find JavaFX tutorials here.
Stack Overflow is one of many online resources for troubleshooting technical problems. Questions like this one are typical. You’ll find great answers to more exotic questions too. You should become proficient at using such resources for resolving troublesome problems. Whatever your problem, there’s a fair chance someone else has encountered it, and that another person has written up an explanation and/or solution. Learning how to use such tools effectively (and ultimately contributing to them!) is an essential skill for a software developer.
Java FX#
Oracle has also produced some good Java FX tutorials. You may find the tutorials on creating visual effects, transformations and transitions and timeline animation useful. The tutorials include a beautiful and detailed example of a tree animation, which is worth reading even if you don’t follow it all. These tutorials are not as mature as Oracle’s Java tutorials, but they are nonetheless a very useful reference. We recommend you use them.
Tools#
Successful completion of this course will require mastery of basic IntelliJ and GitLab/git skills, the two main tools we will use. Not a lot of class time will be devoted to teaching you these – you are expected to learn these tools yourselves. Fortunately there are some very good online resources to help you with each of these. We recommend you use them.
IntelliJ#
IntelliJ is a large and powerful commercial IDE. We use the licensed ‘Ultimate Edition’, and at home you may either use their free student license to use the ‘Ultimate Edition’, or else use their open-source ‘Community Edition’ (the only significant difference as far as this course is concerned is that the community edition does not allow you to create UML diagrams). JetBrains has extensive online documentation, including video tutorials (which we highly recommend). We strongly recommend you start with their introductory video which you can find on their main online documentation page. Their video tutorials include a series on version control.
Git and GitLab#
GitLab comes with online documentation. We explain the basics during lectures in week one. Git has substantial documentation and video tutorials, which you should refer to if you want to go beyond the basics we cover in our course.