Course Wrapup

In completing this course, you now have a much better idea of what modern software development looks like, how a full-stack web application is built, and (we hope!) feel a sense of accomplishment at what you’ve built.

Take a moment to be proud and celebrate! 🥳

Before and After

This is (probably) what your resume looked like at the start of this course:

  • Technical Skills: Python, HTML

We covered so much that simply having a “Technical Skills” section is no longer precise. Your technical skills span the database to the front end and everything in between:

  • Development Tools: git, GitHub, Visual Studio Code (VS Code)
  • Platforms: Linux/Unix-like operating systems, Ubuntu, Windows Subsystem for Linux (WSL)
  • Backend: Python, Flask framework
  • Frontend: HTML, Bootstrap, Jinja
  • Databases: MariaDB, SQL, pymysql

Cleanup?

Once you have a grade for this course, it should be safe to clean up the contents of your cgi-pub directory on Silo. Directories probably have names similar to the following:

  • first-website - described in the Networks and Servers chapter
  • ps-01
  • USERNAME-ps-02
  • USERNAME-ps-06
  • i211-project
  • i211-lecture

What’s next?

The material we covered has many names: full-stack development, information systems, information architecture, or information infrastructure. What these phrases have in common is that they deal with computing across many layers of abstraction.

  1. People
  2. Application software
  3. High-level software
  4. Low-level software
  5. Operating systems
  6. Hardware
  7. Electricity

Here, we borrow layer from ideas in complex systems. A layer or layer of abstraction is a way to think about a system: and each layer works by “talking” to the layer beneath it. How do people interact with computers? — using application software. How does hardware work? — using electricity. What is the operating system? — a program that manages the underlying hardware.

The final system we built was application software: it was intended to help a user accomplish a task—such as bookmarking recipes or tagging them for easy searching. In order to build that application software, we had to write high-level software in Python to manage data and application state. That software we wrote was built on top of lower levels of abstraction: Python, Flask, Bootstrap, and many re-usable components. In order to make this system work: we needed to know enough about operating systems to store our data and run our code.

In other words, we focused our time on three layers of what is really a 7-layer information system:

- People
+ Application software
+ High-level software
- Low-level software
+ Operating systems
- Hardware
- Electricity

No matter where you go in your informatics career, you will be working at the intersection of a few of these layers.

  • (I300 - HCI) Human Computer Interaction & Design: How do people interact with application software? How can application software be improved to better meet their needs?
  • (I311 - App Development) Android App Development: How do we build application software for Android?
  • (I360 - Web Design) Static Website Design and Usability: How do we design user-friendly professional web interfaces?
  • (I365 - JavaScript) Frontend Programming Language: How do we create interactive web interfaces?
  • (I399 - Data Analysis) Data Science: How do people make decisions? How can application software support their decisions?
  • (I399 - Cloud) Cloud Computing: How do we virtualize everything between the application and the hardware?