PHP and MySQL Certificate Program
CERTIFICATE OF COMPLETION
All students who finish this program will receive a signed certificate of completion verifying their participation in the program.
In this accelerated certificate program you will learn the fundamentals of developing server-side applications on the LAMP stack (Linux, Apache, MySQL, and PHP). During the <%=globIntensive%> you will build a simple but modern and secure PHP/MySQL application from scratch. No prior programming experience is assumed but skill with HTML, CSS, and a serious interest in learning to program is.
Participants should already have a working understanding of HTML and CSS since this is not a design course, an HTML course, or a Dreamweaver course. In-class coverage of HTML and CSS will be minimal, and we'll be editing all of our code by hand using a text editor. We'll be using HTML5 and CSS3 as implemented in modern browsers. If you can't write HTML and CSS blindfolded with one hand tied behind your back, take our Web Design Certificate Program first and start practicing! We also recommend
BDA provides an iMac workstation with all the necessary software. However, we strongly encourage you to bring your own computer for this course. If you do, you'll need the following:
- An Apache HTTP server with PHP 5.x and a MySQL 5.x server. We recommend MAMP (for Mac - free version is fine) or XAMPP (for Windows) - both are standalone *AMP stacks that are simple ways to get everything you need with a simple one-click installation.
- Text Editor: TextMate, BBEdit, or similar (Mac); Notepad, Notepad++, or similar (Windows)
- Browser: Mozilla Firefox (preferred), Google Chrome, or Safari.
- Firebug for Firefox or the latest version of Safari or Chrome with web developer tools enabled
- FTP Program: Interarchy, Filezilla FTP client or a similar FTP program
- Sequel Pro (Mac), MySQL Workbench (Windows)
The instructor will be using TextMate, Firefox, Firebug, Sequel Pro, and Interarchy.
The first five sessions will mostly focus on general programming concepts and skills. The last five will focus on applying those skills to web development, and the course as a whole will culminate in the presentation of a small personal project.
In our initial meeting we'll talk about logistics and get our local environments set up for development. After a brief review of HTML and CSS, we'll look at basic PHP syntax and write our first dynamic PHP-powered web pages. Hello, PHP!
Next up, we will dive straight into the basic means of interactivity in server-side applications: forms. How do you capture user input? We'll make our dynamic webpage controllable by the user. We'll also build the initial markup for the application we'll be fleshing out over the course of the course: a guestbook.
Programming happens by means of a handful of basic data types and operations on those types. Our second session will look at the array (literally) of things one can do with numbers, strings, booleans, and functions. The second assignment will involve some schoolbook-style exercises and also making our guestbook halfway — well, maybe an eighth of the way—functional.
Our guestbook is less than useful at this point partly because HTTP is stateless. Most web applications need some way to persist data between page loads, and ours is no different. Our PHP program lives and runs on a computer which happens to have a filesystem, so our first approach to persistence is to store guestbook entries in a file. Reading and writing to a file in PHP is actually pretty easy. The trick will be in picking what to write. Initially, we'll write straight markup.
Our guestbook is working! Seemingly. Mostly. But there are some problems. What happens when we want to add a field to the guestbook? What happens if we want to change the style of the entries? How will the server perform with our approach when we get millions of entries (which we undoubtedly will)? Our next step is to take a hard look at the problem of content versus presentation. You may have heard of this concern in terms of CSS and semantic HTML markup. What step can we take to separate the two in this case? We'll review a couple of data formats and settle on JSON for now. We'll also look at some immediate benefits of separating content and presentation, or data and views on that data.
So now we've got a respectable data format and we are keeping our data clean of any unseemly presentation concerns. Our guestbook is working. Things are going well. This is the point when you need to ask yourself: ￼￼￼￼￼￼￼￼￼￼￼￼￼“OK, how can things go wrong?” (Actually with experience you'll learn to start asking that question right away.) In this session we'll look at data validation, sanitization, error handling, and user experience. This is arguably the most important session in the course. Most of the effort of programming often seems to come down to handling failure gracefully. Coming to peace with this early on is probably a good career move!
Alright, now we've got a guestbook! We can throw anything at it and it responds with grace and equanimity. What more could we possibly do with it? Well after error handling, a major “hidden” concern of programming is not just getting it to work under duress, but designing your programs in ways that enable maintenance, understandability, and, most importantly, re-use. DRY is an acronym that means “don't repeat yourself”. We'll look at what this means in general and for us in particular. The goal for this session will be to create an interface for our implementation of a guestbook datastore, and for our specific guestbook. In a sense, it's taking content vs presentation a step further.
We're approaching the finish line now. The next major topic will be migrating our app to use a more robust datastore: a MySQL database. This will enable a number of nice features of the sort that we all expect to find on modern web apps. Luckily, with all the abstraction and design work we've done, this step proves to be pretty painless! Since we so assiduously observed the DRY imperative, the amount of code we have to change is surprisingly small. One catch: there is a little extra work we'll have to do to protect our app from malicious attacks. This isn't a hard step, but it is a critical one.
Our app is pretty much complete. It was a long haul for such a simple app but most of the concerns we explored are things every app will need to address in some way. But our app doesn't exist in a vacuum. The web is an ecosystem: full of interconnections and relationships. Can we tap into that in some way? In this session we'll take a look at APIs: how web apps talk to one another. We'll add code to leverage a API, enhancing our app with images and interactivity.
Review questions, tie up loose ends.
Eric Miller has a background in software, architecture, and music, and wowed his friends in high school by playing Tetris with his toes. He has been coding something or other since 1995 and has been creating software for the web professionally since 2007. Eric has a BS from Stanford University, an M.Arch from the University of Colorado, and a black belt in Aikido, but has sadly allowed his mad Tetris skillz to wither.
This certificate program will be held in the Boulder Digital Arts Boulder location classroom.
BDA Members: $1,009.00
Sorry, we don't have this event scheduled right now but we'll probably be adding it again soon! If you're interested in this event, we recommend using our follow feature to be notified the next time we add it to our schedule. You can also email us to request that we add it soon.
I just finished this program and was very impressed. My biggest concern with paying to take classes is that I won't get my money's worth and this wasn't the case. The instructor, Eric Miller, works in the field every day and it shows. He was always taking the time to show how the curriculum fit into the real world and made sure everyone had a solid grasp of the material before moving on. As with all programs and classes, the material is given in an accelerated pace so you have to make sure you know what's going on before you accept the next challenge, but the small class size allows for it.ChrisRead All Comments