This course is offered through Coursera — you can add it to your Accredible profile to organize your learning, find others learning the same thing and to showcase evidence of your learning on your CV with Accredible's export features.
Course Date: 11 August 2014 to 22 September 2014 (6 weeks)
Learn how to build and deploy modern web application architectures – applications that run over the Internet, in the "cloud," using a browser as the user interface.
Gregory (Greg) L. Heileman received
the BA degree from Wake Forest University in 1982, the MS degree in Biomedical
Engineering and Mathematics from the University of North Carolina-Chapel Hill
in 1986, and the PhD degree in Computer Engineering from the University of
Central Florida in 1989. In 1990 he
joined the Department of Electrical and Computer Engineering (ECE) at the
University of New Mexico, Albuquerque, NM, where he is currently a Professor. He received the School of Engineering's
Teaching Excellence award in 1995, the ECE department Distinguished Teacher
Award in 2000. He held ECE’s Gardner
Zemke Professorship from 2005-08. He was the recipient of ECE’s Lawton-Ellis
Award for combined excellence in teaching, research, and student/community involvement
in 2001 and again in 2009. In 2009 he was
also awarded the IEEE Albuquerque Section Outstanding Educator Award. From 2005-2011 he served as Associate Chair of the ECE department. Since 2011 he
has served as the Associate Provost for Curriculum at the University of New
Mexico. He is
the author of the text Data Structures,
Algorithms and Object-Oriented Programming, published by McGraw-Hill published in
This course explores the development of web application architectures from an engineering perspective. We will consider the fundamental design patterns and philosophies associated with modern web application architectures, along with their major components. By the end of this course, I expect you to be able to:
Design, develop and deploy a modern web application. This course is not about how to build a pretty web page, it's about how to build and deploy the full stack of protocols and technologies associated with a complete web app. That said, it is not possible for you to become an expert in this area in a few weeks. My goal, rather, is to put you on the right path by providing a solid foundation and framework for understanding web applications, allowing you to dig deeper and learn more on your own. The next bullet points describe how we're going to do this.
– and you need to know a little about them too! We'll introduce a number of software design patterns throughout the course that are aimed at helping you to manage this complexity.
Use Ruby on Rails. We're going to learn about web apps through the Ruby on Rails framework.
Rails is a framework for creating web
applications that is built on top of the Ruby programming language. I believe this is one of the best frameworks
for learning about web applications, and it's also proving highly successful as
a platform for commercial offerings.
That said, there are many other frameworks available, and the concepts
you will learn using Rails are transferable to these other frameworks.
Better understand modern software engineering
practice. We’ll be using the latest tools and practices in
software development, source code control, testing, and application
deployment. This will include exposure
to agile development practices, the numerous tools that software engineers are expected to know how to use, and the cloud-based resources that are
becoming increasingly important in web applications.
Will I get a Statement of Accomplishment after completing this class?
Yes. Students who successfully complete the class will receive a Statement of Accomplishment signed by the instructor.
What resources will I need for this class?
For this course, all you need is an Internet connection, a computer onto which you can load the Ruby on Rails development environment (we'll tell you how), and the time to watch the videos and develop/debug/test web app code.
What is the coolest thing I'll learn if I take this class?
How to build and deploy a modern web application that supports a great idea you have, or a business opportunity you've dreamed up.
Week One – Module 1: Introduction and Background Lecture 1: Historical Perspective Lecture 2: What is a Web Application? Lecture 3: Web 1.0, 2.0, 3.0 Application Architectures Lecture 4: Design Patterns Lecture 5: Setting up Your Development Environment Week Two – Module 2: Ruby on Rails Lecture 1: Rails Overview Lecture 2: Your First Rails App Lecture 3: The Blog App – Iteration 1 Lecture 4: Rails Philosophy Lecture 5: Version Control Lecture 6: Git and Rails Week Three – Module 3: Database Interactions Lecture 1: Relational Databases Lecture 2: Databases in Rails Lecture 3: The Active Record Design Pattern Lecture 4: The Blog App – Iteration 2 (Associations) Lecture 5: The Blog App – Iteration 3 (Validations) Week Four – Module 4: The Ruby Programming Language Lecture 1: Ruby Background Lecture 2: Classes and Inheritance Lecture 3: Objects and Variables Lecture 4: Strings, Regular Expressions and Symbols Lecture 5: Expressions and Control Structures Lecture 6: Collections, Blocks and Iterators Week Five – Module 5: Middleware Lecture 1: What is Middleware? Lecture 2: The Hypertext Transfer Protocol (HTTP) – Introduction
Lecture 3: HTTP – Request
Lecture 4: HTTP – Response Lecture 5: The Model-View-Controller (MVC) Design Pattern Lecture 6: Rails Controllers – Request Handling Lecture 7: Rails Controllers – Response Lecture 8: MVC Implementation in Rails Lecture 9: The Blog App – Iteration 4 Week Six – Module 6: Presentation/User Interface Lecture 1: Introduction and Background Lecture 2: HTML – Basic Syntax
Lecture 3: HTML – Document Structure
Lecture 4: HTML – Forms
Lecture 5: Dynamic Content
Lecture 6: Cascading Style Sheets (CSS)
Lecture 8: Ajax
Lecture 9: The Blog App – Iteration 5
The class is broken up into six modules. Each consists of a set of lecture videos, which are between 6 and 12 minutes in length. Each module contains quiz questions and homework assignments that are not part of video lectures.