Fundamentals of Software Development
Overview
Fundamentals of Software Development is an immersive beginner’s course focused on front-end web development. It provides a strong foundation in software development, teaching students to use HTML, CSS, and JavaScript to build modern web applications. The course includes an introduction to professional tools and practices, such as VSCode, Chrome developer tools, Git, GitHub, and Terminal. Students will also learn essential concepts like the MVC pattern, object-oriented and functional programming, basic data structures, and algorithms. Additionally, the course covers project organization, wireframing, Agile development methods, and the MERN stack (MongoDB, Express, React, Node.js) for creating and deploying web apps.
Outcomes
By the end of this course you will be able to:
- Structure and Style Web Documents: Structure web pages using HTML5 for semantic content, and integrate and modify styles using CSS frameworks, applying responsive design principles, animations, and transitions.
- Develop Interactive Web Applications: Understand and apply JavaScript fundamentals, including object-oriented programming, DOM manipulation, external libraries, AJAX, and manage stateful DOM with React components.
- Master Web Development Concepts: Explain modern web architecture, including RESTful APIs, MVC design, server-side routing, authentication, version control with Git/GitHub, and deploy applications to cloud services.
- Utilize Industry-Standard Tools: Configure development environments with tools like Unix, command prompts, text editors (VS Code), MongoDB, Auth0, and Trello, employing industry-standard workflows.
- Execute Collaborative Projects: Build multi-page websites and web applications in teams using professional HTML, CSS, and JavaScript standards, practicing agile development methodologies like pair-programming and project management with Kanban boards
- Supported operating systems: macOS, Linux, or Windows (Pro edition required).
- Latest OS version, fully up to date.
- All security updates installed.
- At least 100GB of free space on the hard drive.
- At least 16GB of RAM, 32GB RAM is strongly preferred.
- Support for video conferencing and screen-sharing, with a reliable webcam and microphone.
Module 1
- Learning. Writing with Markdown.
- The Programmer’s Computer
- Version Control and Cloud Storage
- Structuring Web Pages with HTML
- Styling Web Pages with CSS
- Making Web Pages Interactive with JavaScript
- JavaScript Programming Fundamentals
- Basic Math, Logic, and Computer Architecture
Module 2
- Overview of Development – Website with Correct HTML, CSS, and JavaScript Setup
- Fundamentals of HTML, CSS, and JavaScript – Handling User Inputs and Outputs
- Flow Control; Box Model – Implementing Conditional Logic
- JavaScript Functions; Collaborative Coding – Encapsulating Logic within Functions
- Working with Images, Color, and Style; Branching – Achieving Fidelity; JavaScript and Git Branching Practice
Module 3
- JavaScript Objects; The DOM – Create and render data in the DOM
- Object-Oriented Programming; HTML Tables – Transform literals into constructors; Dynamic table generation
- CSS Layout: Flexbox – Wireframe task; Applying styles
- HTML Forms & JavaScript Events – Form handling and dynamic elements
- JavaScript Debugging; CSS Layouts – Git workflow; Using JS Debugger; Generate HTML from a prototype
Module 4
- Audio/Visual; Accessibility; Math.random() – Choosing random values and gathering user input
- External Libraries and Documentation – Incorporating Chart.js
- Managing Application State with Local Storage – Saving and retrieving data locally
- Psychological Safety – Investigating an existing codebase
- Project Initiation – Practicing resolving merge conflicts
Module 5
- Design Blueprints, User Scenarios, System Blueprint, Development Processes, Technical Writing, Team Contracts
- Initial Development Stage
- Basic Functional Product
- Final Touch-ups, Rehearsal for Demonstrations
- Project Demonstrations in Real Time
Module 6
- Introduction to React and Component Based Design – Array forEach
- Managing State and Props in React – Array map
- Using Functions as Props – Array filter
- Working with Forms in React – Array sort
- Conditional Rendering and Routing – Array reduce
Module 7
- Handling Asynchronous Operations and Integrating External APIs – Distinguishing Between Value and Reference Types
- Setting Up Express Servers – Techniques for String Manipulation: Split, Join, Slice, Splice
- Working with APIs – Regular Expressions (Regex)
- Code Organization and Improvement – Self-Study: Exploring Object Properties and Methods (keys, values, entries)
- Data Persistence Techniques – Working with Two-Dimensional Arrays
Module 8
- MongoDB, Mongoose, and Data Schema Design – Chaining Methods
- Managing Resources: Creation and Removal – Advanced Regex Techniques
- Resource Modification – String Methods: includes, every, substring, charAt
- Inclusion, Equity, and Diversity in Tech
- User Authentication
Module 9
- Design Mockups, User Requirements, System Blueprint, Development Workflow, Project Documentation, Team Agreements
- Initial Development Stage
- Core Functional Product
- Final Refinements, Presentation Rehearsal
- Live Project Showcases