Written by students who passed Immediately available after payment Read online or as PDF Wrong document? Swap it for free 4.6 TrustPilot
logo-home
Presentation

Introduction to pr,ogramming using java /brief explanation

Rating
-
Sold
-
Pages
699
Uploaded on
30-05-2025
Written in
2024/2025

Introduction to Programming Using Java Version 5.0, December 2006 (Version 5.0.2, with minor corrections, November 2007) David J. Eck Hobart and William Smith Colleges Contents Preface xiii 1 The Mental Landscape 1 1.1 Machine Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Asynchronous Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 The Java Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Building Blocks of Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Object-oriented Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.6 The Modern User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.7 The Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Quiz on Chapter 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 Names and Things 19 2.1 The Basic Java Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2 Variables and Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.2 Types and Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.2.3 Variables in Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.3 Objects and Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.3.1 Built-in Subroutines and Functions . . . . . . . . . . . . . . . . . . . . . . 29 2.3.2 Operations on Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.3.3 Introduction to Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.4 Text Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.4.1 A First Text Input Example . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.4.2 Text Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.4.3 TextIO Input Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.4.4 Formatted Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.4.5 Introduction to File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.5 Details of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.5.1 Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.5.2 Increment and Decrement . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.5.3 Relational Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 2.5.4 Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.5.5 Conditional Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.5.6 Assignment Operators and Type-Casts . . . . . . . . . . . . . . . . . . . . 48 2.5.7 Type Conversion of Strings . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.5.8 Precedence Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.6 Programming Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 iii CONTENTS 2.6.1 Java Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.6.2 Command Line Environment . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.6.3 IDEs and Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.6.4 The Problem of Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Exercises for Chapter 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Quiz on Chapter 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3 Control 61 3.1 Blocks, Loops, and Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.1 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.2 The Basic While Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.1.3 The Basic If Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.2 Algorithm Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.2.1 Pseudocode and Stepwise Refinement . . . . . . . . . . . . . . . . . . . . 66 3.2.2 The 3N+1 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.2.3 Coding, Testing, Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.3 while and do..while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 3.3.1 The while Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.3.2 The do..while Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3.3.3 break and continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.4 The for Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.4.1 For Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.4.2 Example: Counting Divisors . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.4.3 Nested for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.4.4 Enums and for-each Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.5 The if Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.5.1 The Dangling else Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.5.2 The if...else if Construction . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.5.3 If Statement Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3.5.4 The Empty Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.6 The switch Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 3.6.1 The Basic switch Statement . . . . . . . . . . . . . . . . . . . . . . . . . . 96 3.6.2 Menus and switch Statements . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.6.3 Enums in switch Statements . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.6.4 Definite Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 3.7 Exceptions and try..catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3.7.1 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 3.7.2 try..catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3.7.3 Exceptions in TextIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 3.8 GUI Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Exercises for Chapter 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Quiz on Chapter 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 4 Subroutines 117 4.1 Black Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.2 Static Subroutines and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 4.2.1 Subroutine Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 4.2.2 Calling Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 v 4.2.3 Subroutines in Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 4.2.4 Member Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.3 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 4.3.1 Using Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 4.3.2 Formal and Actual Parameters . . . . . . . . . . . . . . . . . . . . . . . . 128 4.3.3 Overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4.3.4 Subroutine Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.3.5 Throwing Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 4.3.6 Global and Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 133 4.4 Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 4.4.1 The return statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 4.4.2 Function Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 4.4.3 3N+1 Revisited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 4.5 APIs, Packages, and Javadoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 4.5.1 Toolboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 4.5.2 Java’s Standard Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 4.5.3 Using Classes from Packages . . . . . . . . . . . . . . . . . . . . . . . . . 142 4.5.4 Javadoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 4.6 More on Program Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 4.6.1 Preconditions and Postconditions . . . . . . . . . . . . . . . . . . . . . . . 146 4.6.2 A Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 4.6.3 The Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.7 The Truth About Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 4.7.1 Initialization in Declarations . . . . . . . . . . . . . . . . . . . . . . . . . 154 4.7.2 Named Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 4.7.3 Naming and Scope Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Exercises for Chapter 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Quiz on Chapter 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 5 Objects and Classes 165 5.1 Objects and Instance Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 5.1.1 Objects, Classes, and Instances . . . . . . . . . . . . . . . . . . . . . . . . 166 5.1.2 Fundamentals of Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 5.1.3 Getters and Setters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 5.2 Constructors and Object Initialization . . . . . . . . . . . . . . . . . . . . . . . . 173 5.2.1 Initializing Instance Variables . . . . . . . . . . . . . . . . . . . . . . . . . 173 5.2.2 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 5.2.3 Garbage Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 5.3 Programming with Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 5.3.1 Some Built-in Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 5.3.2 Wrapper Classes and Autoboxing . . . . . . . . . . . . . . . . . . . . . . . 181 5.3.3 The class “Object” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 5.3.4 Object-oriented Analysis and Design . . . . . . . . . . . . . . . . . . . . . 183 5.4 Programming Example: Card, Hand, Deck . . . . . . . . . . . . . . . . . . . . . . 185 5.4.1 Designing the classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 5.4.2 The Card Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 5.4.3 Example: A Simple Card Game . . . . . . . . . . . . . . . . . . . . . . . . 191 and more.......

Show more Read less

Content preview

Introduction to Programming Using Java
Version 5.0, December 2006

(Version 5.0.2, with minor corrections, November 2007)




David J. Eck
Hobart and William Smith Colleges

,ii




c 1996–2007, David J. Eck

David J. Eck ()
Department of Mathematics and Computer Science
Hobart and William Smith Colleges
Geneva, NY 14456

This book can be distributed in unmodified form with no restrictions.
Modified versions can be made and distributed provided they are distributed
under the same license as the original. More specifically: This work is
licensed under the Creative Commons Attribution-Share Alike 2.5 License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-
sa/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th
Floor, San Francisco, California, 94105, USA.

The web site for this book is: http://math.hws.edu/javanotes

,Contents

Preface xiii

1 The Mental Landscape 1
1.1 Machine Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Asynchronous Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 The Java Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Building Blocks of Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Object-oriented Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 The Modern User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.7 The Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Quiz on Chapter 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Names and Things 19
2.1 The Basic Java Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Variables and Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.2 Types and Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.3 Variables in Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3 Objects and Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.1 Built-in Subroutines and Functions . . . . . . . . . . . . . . . . . . . . . . 29
2.3.2 Operations on Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.3 Introduction to Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4 Text Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.4.1 A First Text Input Example . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.4.2 Text Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4.3 TextIO Input Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.4 Formatted Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.5 Introduction to File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5 Details of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.5.1 Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.5.2 Increment and Decrement . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.5.3 Relational Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.5.4 Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.5.5 Conditional Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5.6 Assignment Operators and Type-Casts . . . . . . . . . . . . . . . . . . . . 48
2.5.7 Type Conversion of Strings . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.8 Precedence Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.6 Programming Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

iii

, iv CONTENTS


2.6.1 Java Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.6.2 Command Line Environment . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.6.3 IDEs and Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.6.4 The Problem of Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Exercises for Chapter 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Quiz on Chapter 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3 Control 61
3.1 Blocks, Loops, and Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.1.1 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.1.2 The Basic While Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.1.3 The Basic If Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.2 Algorithm Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.1 Pseudocode and Stepwise Refinement . . . . . . . . . . . . . . . . . . . . 66
3.2.2 The 3N+1 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.2.3 Coding, Testing, Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.3 while and do..while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.3.1 The while Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3.2 The do..while Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.3.3 break and continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.4 The for Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.4.1 For Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.4.2 Example: Counting Divisors . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.4.3 Nested for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.4.4 Enums and for-each Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.5 The if Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.5.1 The Dangling else Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.5.2 The if...else if Construction . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.5.3 If Statement Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.5.4 The Empty Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.6 The switch Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.6.1 The Basic switch Statement . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.6.2 Menus and switch Statements . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.6.3 Enums in switch Statements . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.6.4 Definite Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.7 Exceptions and try..catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.7.1 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.7.2 try..catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.7.3 Exceptions in TextIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.8 GUI Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Exercises for Chapter 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Quiz on Chapter 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

4 Subroutines 117
4.1 Black Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.2 Static Subroutines and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.2.1 Subroutine Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.2.2 Calling Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

Document information

Uploaded on
May 30, 2025
Number of pages
699
Written in
2024/2025
Type
PRESENTATION
Person
Unknown
£12.38
Get access to the full document:

Wrong document? Swap it for free Within 14 days of purchase and before downloading, you can choose a different document. You can simply spend the amount again.
Written by students who passed
Immediately available after payment
Read online or as PDF

Get to know the seller
Seller avatar
vishvajithvenkatesan

Get to know the seller

Seller avatar
vishvajithvenkatesan Google
View profile
Follow You need to be logged in order to follow users or courses
Sold
-
Member since
10 months
Number of followers
0
Documents
2
Last sold
-

0.0

0 reviews

5
0
4
0
3
0
2
0
1
0

Trending documents

Recently viewed by you

Why students choose Stuvia

Created by fellow students, verified by reviews

Quality you can trust: written by students who passed their exams and reviewed by others who've used these revision notes.

Didn't get what you expected? Choose another document

No problem! You can straightaway pick a different document that better suits what you're after.

Pay as you like, start learning straight away

No subscription, no commitments. Pay the way you're used to via credit card and download your PDF document instantly.

Student with book image

“Bought, downloaded, and smashed it. It really can be that simple.”

Alisha Student

Frequently asked questions