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 chapterps-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.
- People
- Application software
- High-level software
- Low-level software
- Operating systems
- Hardware
- 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?