Top
Email
Bottom
PHP 7.3 and MySQL 8
 
Name:
Company:
Email:
Telephone:
Training type:
Delegates:


Additional Information
 

PHP 7.3 and MySQL 8 course at a glance

Pages
858No of slides in the Manual
Exercises
23Total No of Exercises
Sections
38No of main topics, see index below
Public
NoPublic course in the UK and Ireland
On-Site
YesWe can come to your venue
Level
11 - Beginners
2 - Intermediate
3 - Advanced
Days
5Week days but we can put on weekend courses
Duration:
Minimum skill level required:
On-Site course:
Public course:
Sections:
No of exercises:
No of pages in the manual:
Pre-Requisite course(s):
Suggested further course(s):
Price guide:
5 days
1 (1 - Beginner, 2 - Experienced 3 - Advanced)
Yes
No
38
23
858
None
Essential CSS 3 Essential JavaScript
Contact us for the latest pricing

PHP 7.3 and MySQL 8 Programming training
Exercise highlights
(Lots to learn and practice ...)

Creating HTML output using PHP
Creating Cookies
Loading data into MySQL
Selecting and displaying records from a MySQL database
Passing data between pages using $_POST

Index of PHP 7.3 and MySQL 8 Programming training course

PHP 7.3
 
 

Section
Section Name
Page

One
PHP Introduction
1

 
- PHP: Hypertext Preprocessor
2

 
- Some of its main uses
4

Two
PHP Structure
5

 
- Basic Structure of PHP
6

 
- PHP Version etc
15

 
- Use of Echo
17

 
- Concatenating Echo
19

 
- Use of Echo with Escape Characters
21

 
- Use of Echo with Calculations
27

 
- Echo versus Print
30

 
- Use of Echo with HTML
32

 
- Commenting code in PHP
34

Three
Defining PHP Variables
37

 
- Introduction
38

 
- Defining PHP Variables
39

 
- Naming PHP Variables
40

 
- Declaring PHP Variables
43

 
- Flexibility of Datatypes
45

 
- Casting Datatypes
46

 
- Using gettype() with PHP Variables
50

 
- Using var_dump() with PHP Variables
52

 
- Using settype() with PHP Variables
53

 
- Using unset() with PHP Variables
55

 
- Using Heredoc
56

 
- Using Newdoc
58

 
- Using Define for Constants in PHP
59

Four
Manipulating Variables in PHP
61

 
- Introduction
62

 
- Mathematics
63

 
- Incrementing Values
67

 
- Prefix and Postfix
69

 
- Concatenation
72

 
- Exercise One
76

Five
Using PHP built in String Functions
81

 
- Introduction
82

 
- Miscellaneous String Functions
84

 
- Changing Case of Strings
89

 
- Substringing Strings
90

 
- Searching Strings
92

 
- Trimming Strings
98

 
- Nesting Functions
99

Six
Using PHP built in Number Functions
100

 
- Introduction
101

 
- Number Rounding
102

 
- Exercise Two
106

Seven
Introduction to PHP Arrays
109

 
- Introduction
110

 
- Numeric Arrays
112

 
- Populating Numeric Arrays
113

 
- Populating Numeric Arrays with range()
116

 
- Populating Numeric Arrays with array_pad()
119

 
- Populating Associative Arrays
121

 
- Using count() or sizeof()
127

 
- Using var_dump()
128

 
- Using print_r()
130

 
- Manually traversing Arrays
131

 
- Converting Arrays
133

 
- Using implode() and explode()
134

 
- Using unset()
136

 
- Multi-Dimensional Arrays
137

 
- Using var_dump() on multi-dimension arrays
140

 
- Using count() on multi-dimension arrays
143

 
- Three dimensional arrays
144

 
- Accessing Three Dimensional Arrays
146

 
- Alternative declaration of Arrays
147

 
- Exercise Three
148

Eight
Using Array Functions
154

 
- Introduction
155

 
- Using array_sum() / array_product()
156

 
- Sorting Arrays
157

 
- assort() and arsort()
163

 
- ksort() and krsort()
164

 
- array_multisort()
165

 
- array_reverse()
169

 
- array_flip()
170

 
- array_fill() and array_fill_keys()
172

 
- array_combine()
176

 
- array_intersect()
177

 
- array_diff()
178

 
- array_merge()
179

 
- array_unique()
180

 
- Exercise Four
181

Nine
Conditional PHP Statements
185

 
- Conditional tests
186

 
- Comparison Operators
187

 
- If statement structure
189

 
- Grouping processes in an 'If' statement
191

 
- Alternative processing
193

 
- Multiple 'If' statements
194

 
- Testing different datatypes
198

 
- Testing Strings
200

 
- Testing Booleans
204

 
- Testing for nulls
206

 
- Alternative Colon syntax
207

 
- Multiple Condition tests (and)
209

 
- Multiple Condition tests (or)
210

 
- Multiple Condition tests (xor)
211

 
- Nested If Conditions
212

 
- Ternary Operator
213

 
- Using PHP built in Functions for testing
216

 
- Exercise Five
218

Ten
Using Switch in Condition Testing
221

 
- Introduction
222

 
- The Switch Syntax
223

 
- Using Break with Switch
225

 
- Using Default with Switch
227

 
- Using Switch with Colon Syntax
228

 
- Advanced Switch Testing
229

 
- Mixing If Conditions with Switch
232

 
- Exercise Six
234

Eleven
Looping through values in PHP
236

 
- Introduction
237

 
- Foreach processing of Arrays
238

 
- Foreach processing with Colon syntax
242

 
- Multidimensional Arrays with Foreach
243

 
- While Loops
245

 
- While Loops with Colon Syntax
247

 
- Using Break to exit Loops
248

 
- Do .. While Loops
249

 
- Do .. While and While Loops with Arrays
251

 
- For Loops
252

 
- For Loops with Colon Syntax
254

 
- For Loops with empty expressions
255

 
- For Loops with more than one variable
257

 
- For Loops with Arrays
258

 
- Advanced Breaking of Loops
260

 
- Using Continue with Loops
267

 
- Exercise Seven
270

Twelve
Using Dates within PHP
274

 
- Introduction
275

 
- Creating String of Dates
276

 
- Converting Strings to Dates using strtotime()
277

 
- Limitation of using strtotime()
284

 
- Using Format Masks with date()
285

 
- Comparing Dates
287

 
- Adding to Dates
288

 
- Using mktime()
289

 
- Using getdate()
290

 
- Other Date Functions
291

 
- Exercise Eight
292

Thirteen
Regular Expressions using PCRE
294

 
- Introduction
295

 
- Testing for 'Contains' within a String
297

 
- Starts or Ends using Line Anchors
298

 
- Starts and Ends using Line Anchors (or)
300

 
- Using the Dot (Any Character)
301

 
- Using {Intervals}
303

 
- Using Character Lists []
305

 
- Using Character Lists to exclude matches
308

 
- Using Escape Sequences
309

 
- Using the Question Mark (Optional)
311

 
- Using the Plus sign (Mandatory)
313

 
- Using the Star sign (Optional)
314

 
- Backreferencing
315

 
- POSIX
317

 
- Using preg_replace()
319

 
- Using preg_replace() with arrays
321

 
- Using preg_filter()
323

 
- Using preg_replace_callback()
324

 
- Using preg_match()
325

 
- Preg_match() with PREG_OFFSET_CAPTURE
326

 
- Using preg_match_all()
327

 
- Using preg_grep()
329

 
- Using preg_last_error()
331

 
- Using preg_quote()
332

 
- Using preg_split()
333

 
- Using preg_split() with arrays
335

 
- Exercise Nine
336

Fourteen
PHP Functions
339

 
- Introduction
340

 
- Rudimentary Functions
341

 
- Function Positioning
343

 
- Passing Parameters to Functions
344

 
- Passing Multiple Parameters to Functions
346

 
- Defaulting Parameters in Functions
347

 
- Returning Values
348

 
- Returning Values in an Array
350

 
- The scope of Variables
351

 
- Global Variables
353

 
- Passing Arguments by Reference
354

 
- Dynamic Function Calls
355

 
- Calling Functions from other Functions
358

 
- Calling PHP Functions in other files
359

 
- Structure of the PHP file
360

 
- Calling the PHP file
361

 
- Calling the PHP file using include()
362

 
- Passing Parameters to another PHP file
365

 
- Exercise Ten
366

Fifteen
PHP Cookies
369

 
- Introduction
370

 
- Creating Cookies in PHP with setcookie()
371

 
- Setting the expiry date for Cookies
373

 
- Setting the path for Cookies
375

 
- Setting the domain/security for Cookies
376

 
- Reading Cookies with $_COOKIE
377

 
- Using Arrays with Cookies
379

Sixteen
PHP Sessions
380

 
- Introduction
381

 
- Creating Sessions
382

 
- Testing Sessions
383

 
- Using Arrays with Sessions
384

 
- Deleting Sessions
385

Seventeen
PHP Form Processor
386

 
- Introduction
387

 
- Anatomy of a HTML form
389

 
- Reading input using $_POST/$_GET
392

 
- Reading input using $_POST
393

 
- Reading input using $_GET
394

 
- $_GET versus $_POST
395

 
- Using $_REQUEST
396

 
- Using $_SERVER
397

 
- Preventing Invalid HTML in Forms
401

 
- Emailing in PHP
402

 
- Emailing HTML in PHP
404

 
- Emailing with attachments in PHP
406

 
- Exercise Eleven
407

Eighteen
PHP Errors
410

 
- Introduction
411

 
- Typical Errors
412

 
- Suppressing Errors
414

 
- $php_errormsg
417

 
- Using die to end the processing
419

 
- Using exit to end the processing
420

 
- Using isset() $php_errormsg
421

 
- Alternative way to use $php_errormsg
422

 
- Using error_reporting()
423

 
- Using error_reporting() report levels
426

 
- Custom error handling
428

 
- Raising Errors using trigger_error()
432

 
- Using error_log
434

 
- Using a centralised error handler
437

Nineteen
Exceptions
439

 
- Introduction
440

 
- Exception Syntax
441

 
- The 'try'
442

 
- The 'throw'
443

 
- The 'catch'
444

 
- Standard Exceptions
445

 
- Developer Defined Exceptions
448

 
- Processing the Exceptions
449

 
- Exception Methods
450

 
- set_exception_handler()
452

 
- Re-throwing Exceptions
454

 
- Finally
455

 
- Exercise Twelve
457

Twenty
PHP File I/O
459

 
- Introduction
460

 
- Using fopen()
461

 
- Access Modes
462

 
- Using fgets()
464

 
- Using fgetc()
467

 
- Using file()
468

 
- Using file_get_contents()
469

 
- Using fopen() with URLs
471

 
- Using fputs() / fwrite()
472

 
- Using file_put_contents()
474

 
- Working with Comma Separated Files (CSV)
477

 
- Using fgetcsv()
479

 
- Using fputcsv()
481

 
- Working with Binary Files
483

 
- Checking the Size of Bytes written
486

 
- Operating System Functions
487

 
- Using exec()
489

Twenty One
Creating HTML with PHP
491

 
- Introduction
492

 
- Why use PHP
493

 
- HTML example
494

 
- PHP simulating the HTML example
496

 
- Using PHP to create dynamic HTML
500

 
- Using htmlspecialchars()
507

Twenty Two
PHP Object Orientated Programming
508

 
- Introduction
509

 
- Terminology
510

 
- Instances
511

 
- Extending Classes
513

 
- Using '$this'
515

 
- Private and Public Methods
517

 
- Creating new Classes
518

 
- Referencing via Variables
520

 
- Exercise Thirteen
521

MySQL 8
 
 

Section
Section Name
Page

One
Introduction to MySQL
2

 
- What is SQL used for ?
3

 
- Why use MySQL with PHP ?
4

 
- Definition of a Database
5

 
- Using MySQL with PHP
6

Two
Simple MySQL Queries in PHP
8

 
- Introduction
9

 
- Show Tables
10

 
- Show Columns
14

 
- Describe
17

 
- Selecting Data from a Table
18

 
- Counting records in a Table
21

 
- Selecting Data from a Table
23

 
- Selecting Columns from a Table
24

 
- Selecting Literals from a Table
25

 
- Selecting Literals from Dual
26

 
- Exercise One
27

 
- Manipulation with Functions
29

 
- Concatenating Columns
33

 
- Performing Calculations
34

 
- Using Variables
35

 
- Using mysqli_fetch_array()
37

 
- Using Aliases
38

 
- Ordering Data
41

 
- Ordering more than One Column
43

 
- Manipulating Dates using date_add()
44

 
- Displaying Dates using date_format()
46

 
- Exercise Two
48

Three
MySQL Errors
56

 
- Determining Errors in the SQL
57

 
- Using mysqli_errno() and mysqli_error()
58

Four
Limiting Data Selected with a Where Clause
59

 
- Limiting Data
60

 
- Different types of MySQL Where Clauses
62

 
- Using Table Aliases
73

 
- Combining Where Clauses
75

 
- Different types of MySQL Where Clauses
76

 
- Handling Nulls in Where Clauses
77

 
- Using Functions in Where Clauses
78

 
- Using PHP Variables in Where Clauses
80

 
- Exercise Three
81

Five
Aggregating Values
85

 
- Introduction
86

 
- Using Group By
88

 
- Using Having with Group By
90

 
- Using With Rollup to Total Grouping
91

 
- Using Distinct()
92

 
- Exercise Four
93

Six
Regular Expressions
96

 
- Introduction
97

 
- Testing for 'Contains' within a String
98

 
- Starts or Ends using Line Anchors
99

 
- Starts and Ends using Line Anchors (or)
100

 
- Using the Dot (Any Character)
101

 
- Using {Intervals}
102

 
- Using Character Lists []
104

 
- Using Character Lists to exclude matches
107

 
- POSIX
108

 
- Using the Question Mark (Optional)
110

 
- Using the Plus sign (Mandatory)
112

 
- Using the Star sign (Optional)
113

 
- Exercise Five
114

Seven
Joining Tables in a MySQL Statement
116

 
- Introduction
117

 
- Linking Tables in an SQL Statement
118

 
- Theta style of SQL
123

 
- ANSI style of SQL
124

 
- Problems with Data matching
125

 
- Problems with Joining Tables in SQL
126

 
- Ansi SQL Standards (Natural Joins)
127

 
- Ansi SQL Standards (Cross Joins)
128

 
- Ansi SQL Standards (Joins/Using)
129

 
- Ansi SQL Standards (On)
130

 
- Ansi SQL Standards (Multiple On)
131

 
- Ansi SQL Standards (Left Outer Joins)
132

 
- Ansi SQL Standards (Right Outer Joins)
133

 
- Merging Tables
134

 
- Using Union to Merge Tables
135

 
- Using Union All to Merge Tables
136

 
- Using Intersect to Merge Tables
137

 
- Using Minus to Merge Tables
138

 
- Knowledge Check
139

 
- Knowledge Check - Union
140

 
- Union Syntax in MySQL
141

 
- Knowledge Check - Union All
142

 
- Union All Syntax in MySQL
143

 
- Knowledge Check - Intersect
144

 
- Intersect Syntax in MySQL
145

 
- Knowledge Check - Minus
146

 
- Minus Syntax in MySQL
147

 
- Using the Merge Syntax in MySQL
148

 
- Exercise Six
149

Eight
Advanced MySQL Query Techniques
154

 
- Using Limit
155

 
- Using If()
157

 
- Using Ifnull()
158

 
- Using Nullif
159

 
- Using Case Function
160

 
- Using Sub-queries
164

 
- Using Set to create variables
167

 
- Populating a Variable from a Query
168

 
- Exercise Seven
170

Nine
MySQL Datatypes
173

 
- Introduction
174

 
- Numeric Datatypes (Integer)
175

 
- Numeric Datatypes (Decimal)
176

 
- String Text Datatypes
177

 
- String Blob Datatypes
178

 
- String List Datatypes
179

 
- Date Datatypes
180

Ten
Creating Database Objects
181

 
- Creating Tables
182

 
- Mandatory Columns
183

 
- Creation Syntax for Tables
184

 
- Column Creation
187

 
- AUTO_INCREMENT
189

 
- Last_insert_id
190

 
- Drop Table Syntax
191

 
- Temporary Tables
192

 
- Creating Indexes
194

 
- Primary Key Creation
197

 
- Unique Key Creation
200

 
- Foreign Key Creation
203

 
- On Delete / On Update
205

 
- Cascade
208

 
- Set Null
209

 
- NO ACTION
210

 
- RESTRICT
211

 
- SET DEFAULT
212

 
- Creating Views
213

 
- Renaming Views
216

 
- Dropping Views
217

 
- Exercise Eight
218

Eleven
Altering Elements
220

 
- Altering Tables
221

Twelve
Inserting and Altering Data
224

 
- Rules
225

 
- Syntax for Populating Tables
226

 
- Inserting using the Set syntax
232

 
- Multiple Inserts
233

 
- On Duplicate Key Update
234

 
- Using Replace for Inserting Records
235

 
- General Comments
238

 
- Updating Records Rules
239

 
- Updating Data
240

 
- Deleting Data
243

 
- Inserting Large Objects
245

 
- Views
247

Thirteen
Prepared Statements
251

 
- Introduction
252

 
- Preparing the Statement
253

 
- Removing Prepared Statements
254

 
- Using Parameters
255

 
- Using mysqli_prepare()
257

 
- Using mysqli_stmt_bind_param()
258

Fourteen
Committing Records
259

 
- DDL and DML
260

 
- mysqli_commit() and mysqli_rollback()
262

 
- What happens if disconnected ?
264

 
- Exercise Nine
265

Fifteen
Importing and Exporting in MySQL
271

 
- Outfile
272

 
- Problems with Outfile
276

 
- Using Dumpfile
278

 
- Selecting into Variables
279

 
- Importing Data using Infile
280

 
- Ignoring Lines using Infile
282

 
- Using the Set command with Infile
283

 
- Using the Lines option with Infile
286

 
- Loading comma separated files
287

 
- Loading XML file
289

 
- Loading XML file using Ignore
291

 
- Loading XML file naming Columns
292

 
- Loading XML file using Set
293

Sixteen
Using XML with PHP
294

 
- Introduction
295

 
- Reading XML files with PHP with DOM
296

 
- Reading XML with getElementsByTagName()
304

 
- Looping with getElementsByTagName()
306

 
- Writing XML files with PHP
315

 
- Writing XML files with PHP Arrays
320

 
- Writing XML files with PHP from MySQL
326

 
- Exercise Thirteen
331


Sections of PHP 7.3 with MySQL 8

PHP 7.3
 

1
PHP Introduction

2
PHP Structure

3
Defining PHP Variables

4
Manipulating Variables in PHP

5
Using PHP built in String Functions

6
Using PHP built in Number Functions

7
Introduction to PHP Arrays

8
Using Array Functions

9
Conditional PHP Statements

10
Using Switch in Condition Testing

11
Looping through values in PHP

12
Using Dates within PHP

13
Regular Expressions using PCRE

14
PHP Functions

15
PHP Cookies

16
PHP Sessions

17
PHP Form Processor

18
PHP Errors

19
Exceptions

20
PHP File I/O

21
Creating HTML with PHP

22
PHP Object Orientated Programming

MySQL 8
 

1
Introduction to MySQL

2
Simple MySQL Queries in PHP

3
MySQL Errors

4
Limiting Data with a Where Clause

5
Aggregating Values

6
Regular Expressions

7
Joining Tables in a MySQL Statement

8
Advanced MySQL Query Techniques

9
MySQL Datatypes

10
Creating Database Objects

11
Altering Elements

12
Inserting and Altering Data

13
Prepared Statements

14
Committing Records

15
Importing and Exporting in MySQL

16
Using XML with PHP

Synopsis for PHP 7.3 and MySQL 8 Programming training course

Two courses in one but two languages / products which are linked inexplicitly when designing quality websites, the first is PHP (Hypertext Pre-processor), this forms the first three days of the course, the second is the Database / language, MySQL.

When you view the source of a web-page you will see lots and lots of HTML commands which render the finished article into an informative and hopefully attractive page, it's likely that this page has not been hard-coded but was dynamically generated most likely by PHP processing … why use PHP ? well firstly HTML is primarily a rendering language, its real skill is in its production of the final product, PHP is different, it’s a programming language which can produce HTML code after the Developer has made all the decisions necessary regarding how the output will look, these decisions could be something as simple as retrieving the name of the person when they last used the page, to complex output based on maybe the location of the person or the time of the day, all this taking place before the webpage is rendered within the browser (hence pre-processor – more about that later).

Fundamentally PHP contains familiar structure to other programming languages but also has a series of quirks which we will guide the Delegates through, the course has been designed for both experienced Developers and newbies to programming, with additional exercises for programmers who are that little bit faster picking up the techniques. On the subject of exercises there are plenty within the course flow, and full support is given when the Delegates are working their way through them.

The PHP course will guide the Delegates gradually through the product looking at the basic structure, defining variables, populating them, testing them and outputting them onto the webpage, one of the first things the Delegates will learn is how to incorporate PHP within the webpage, either embedded within the HTML or a webpage totally created by PHP, this page is generated by PHP, after the course you will be able to replicate it in some part (there are bits generated using CSS and JavaScript – again more about that later).

Before we can create high end pages in PHP like this one, the course develops the Delegate's knowledge of PHP's programming capabilities, topics such as looping and 'if' statements are covered, in fact another section lower down on this page lists all the topics covered, once most of the programming topics are covered the course will move on to more detailed topics such as PHP cookies and calling other pages from the original, reading and writing to and from the Operating system files are also covered.

All of the above takes the first three days of the course, if only PHP is required Seer Computing has separated this part into another course, please enquire about this.

The second part of the course deals with interfacing between PHP and a MySQL Database, primarily the Delegate will learn how to fire SQL commands at the Database and render the data sets returned onto the webpage … in other words the data is extracted from the Database and shown in the browser, this part concentrates on User action against the Database, it assumes the Delegate has little or no knowledge of MySQL and builds up the SQL commands within the PHP coding to quite sophisticated queries and table commands, this part of the course is also available as a separate onsite course and we also have a four day MySQL course which uses the standard MySQL interface rather than PHP, this is much more in depth than this module and develops Database triggers, indexes etc. not covered in this course.

In order to run the course we use the Xampp software to host the PHP pre-processor and the MySQL database this effectively simulates the pre-processor that would be available in a live hosted website environment, other software is available which performs more or less the same functionality but this one is as good as any. This leads us nicely onto the subject of PHP being a pre-processor, this was touched on earlier and is discussed early on in the PHP course but it is worth informing you that PHP is not a 'reactive' language, it is used to pre-determine how the webpage will be rendered and will not / cannot react to any input etc. that may occur on the current page (this is not strictly true as will be illustrated when values are passed from one page to another on the course), the reality is that if a web page Developer needs the current page to react to input from the User then a combination of PHP and JavaScript will be necessary … for that reason we also have an excellent JavaScript course available.

Finally having already publicised our JavaScript course, this may be opportune to mention the CSS course we also perform, this is effectively the formatting style sheets used by HTML to render the webpages and without it most webpages would be very dull indeed, if you going to produce stylish and interesting websites it would be worthwhile adding CSS to your skill set, there is a lot more to it than just changing the colours of fonts !!

Request for detailsClick for the contact form for the PHP 7.3 and MySQL 8 training course
Public Courses
Oracle Essential SQL 21c
Days
2
Pages
340
Exercises
8
Sections
15
Public
Yes
On-Site
Yes
Public Courses
Oracle Essential PLSQL 21c
Days
3
Pages
384
Exercises
13
Sections
25
Public
Yes
On-Site
Yes
Public Courses
Using SQL with Oracle SQL Developer 19.2
Days
4
Pages
884
Exercises
18
Sections
37
Public
Yes
On-Site
Yes
Public Courses
Essential JavaScript
Days
4
Pages
660
Exercises
16
Sections
31
Public
Yes
On-Site
Yes
Public Courses
Essential CSS 3
Days
4
Pages
800
Exercises
15
Sections
30
Public
Yes
On-Site
Yes
Public Courses
Essential SQLite 3
Days
3
Pages
550
Exercises
12
Sections
24
Public
Yes
On-Site
Yes
Public Courses
Essential MySQL 8
Days
4
Pages
533
Exercises
16
Sections
24
Public
Yes
On-Site
Yes
Public Courses
Essential Python 3
Days
5
Pages
955
Exercises
17
Sections
41
Public
Yes
On-Site
Yes
Public Courses
Oracle Application Express 20
Days
0
Pages
0
Exercises
0
Sections
0
Public
Yes
On-Site
Yes
Public Courses
PHP 8 and MySQL 8
Days
5
Pages
870
Exercises
23
Sections
38
Public
Yes
On-Site
Yes
Public Courses
Java 17 Programming with Eclipse 2021-12
Days
5
Pages
788
Exercises
23
Sections
44
Public
Yes
On-Site
Yes
Public Courses
Java 17 Swing with Eclipse 2021-12
Days
5
Pages
756
Exercises
19
Sections
35
Public
Yes
On-Site
Yes
Click on the course name to see full details, left and right to view other courses