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.
For looking up details about any class or method in the Java standard library,
the Java SE API specification is always a go-to. (Most likely, everything you will need to look up will be in the java.base
module.)
Likewise, there is a complete JavaFX API documentation.
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.
However, remember that asking someone else (whether it is in private or in a public forum) to solve an assignment problem for you is not permitted, and will be considered academic misconduct.
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 will use their open-source ‘Community Edition’. This is the version that is installed on CSIT lab computers. You may either use their free student license to obtain the ‘Ultimate Edition’, or else use the same open-source version that we do (‘Community Edition’). The Ultimate Edition has many extra features but none that we will make use of in this course. JetBrains has extensive online documentation, including video tutorials. 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 will explain some of the basics during lectures in week one. Git has substantial documentation and video tutorials, which you can refer to if you want to go beyond the basics we cover in this course.
Because git/gitlab are used in many COMP courses, the School of Computing has a git manual, with guides to common tasks such as fork and clone, committing and pushing, and more.
The course web site also has a guide to upstream pull.