DerekCresswell / CSC207-Course-Notes

WIP: Course notes for CSC207 at the University of Toronto.
0 stars 0 forks source link

CSC207 Course Notes

These notes comprise the course notes for UofT's CSC207, Software Design. They are intended to give students an overview of the essential pieces of the Java Programming Language that will be required for the course project.

Methodology

These lessons are provided as motivating examples, challenges, and problems that more closely represent 'real world' code one might encounter. This is as opposed to a list of concepts and syntax for one to memorize. With that in mind, it is strongly encouraged that students have open a 'scratch file' in which they can copy and experiment with any provided code.

By scratch file, we mean a Java file (or multiple) with a main function set up that you can quickly modify and play with results. See here for a template file.

This is key to truly understanding the language as we progress. These notes will ask you to run, expand, and understand presented code.

Languages as Tools

A key reason for presenting Java in the above manner is that we want to showcase Java as another tool in your kit. At heart, all programming languages are doing the same thing, allowing developers to interface with an underlying computer. To this extent, we can (often) solve any problem given to us in (almost) any language. The difference between these languages then becomes what they are specialized to do.

By now, you have learned Python within CSC108 or CSC148. Python is a language that aims to make programming a rather straightforward experience with it's 'English like' syntax. It has many features that you allow for quick prototyping and provides many commonly used functionalities built into the language itself.

Using Java, we will be able to do anything that Python can do but will have to achieve some of these results differently. Some problems may be made easier by utilising Java over Python (or vice versa). This is why we want to not only teach you about Java, but also about how to approach learning a new language (or tool, if you prefer) through applying it to various problems. This should allow you to see various strengths and weakness of the language and how best to utilise them. As a developer, it is your job to identify the tools that will best fit the problem you face.

Background on Java

Some details about the Java language...

Table of Contents

All examples within the notes...

Raising Issues

Course Links