# 101: Explore Software Development
## Outcomes
At the end of this journey, you will:
- Understand the basics of what it means to be a professional software developer.
- Understand how HTML and CSS work together to create the modern web.
- Create a complete website.
- Know how to deploy your website and be able to share your accomplishments with friends and family.
- Be able to identify whether a career in coding and the sigmatech academy program is right for you.
## Topics
The Modern Web
- How the pieces work together
HTML
- Structuring your information
- Connecting web pages
- Sharing your web site
CSS
- Integrating style sheets
- Modifying CSS styles
The Tech Industry
- A typical day for a software developer
- Common job titles
- The path to becoming a web or mobile developer
## Material Requirements
You are required to supply your own laptop, Chromebook, or iPad with a keyboard.
## Professionalism
Punctuality, participation in discussions, completion of assignments, and demonstration of professional courtesy to others are required, in accordance with our Code of Conduct. Attendance will be taken at the beginning of the workshop. Passing requires attendance at the full workshop.
# 102: Intro to Software Developmen
## Outcomes
By the end of this workshop, you will:
- Complete the entirety of Code 201's required prework.
- Configure your computer and see the workflow for serious software development, with free and open-source tools.
- Learn to write documentation using Markdown.
- Practice using a version control workflow with GitHub.
- Dive deeper into the proper usage of “semantic” HTML tags.
- Practice utilizing CSS to make your web pages look the way you want.
- Get introduced to programming concepts like: Variables, Conditionals and Loops.
- Learn how to utilize JavaScript.
- Be more prepared for the challenges ahead in Code 201, or in learning to code anywhere.
- Have a wider network of new and experienced developers, and prepare your resume for all the awesome new skills you are about to learn.
## Prerequisites
- Required: Computer updated with the latest version of OS, all security patches installed. See “Material Requirements” below.
- Required: Familiarity with [basic algebra](https://www.mathsisfun.com/algebra/index.html) concepts.
- Required: Code 101 or equivalent exposure to basic HTML and CSS.
- Recommended: Be able to type at least 30 words per minute.
## Topics
Web Development
- Introduction to software development with AI tools.
- Tie together HTML, CSS, and JavaScript in an interactive web page.
- Use the same tools utilized by professionals across the tech industry, right on your own laptop.
- Learn the benefits of version control with Git and GitHub.
JavaScript Programming
- Variables & storing data
- Conditionals
- Flow control with “for” and “while” loops
- Everything you need to know for the 201 Entrance Test!
Collaboration
- Get help from an experienced instructor or teaching assistant.
- Open time during each class session to work on independent and paired challenges.
- Ask questions related to the code assignments, or programming in general.
- Prepare for the career change with guided coaching on how to set up your resume.
# 201: Foundations of Software Development
## Overview
Build a strong software development foundation and learn how to use AI tools to code with HTML, CSS, JavaScript, and various libraries to create fully-functional web apps.
This course guides students toward developing a well-rounded foundation of skills necessary for modern web development in the AI-powered world. These skills include using AI tools while hand-coding HTML, CSS, and JavaScript apps utilizing Git workflow processes, project organization, designing with wireframing and employing introductory Agile development methods.
This course includes a career coaching curriculum to get you ready for your job search. The course totals 160 hours, including lectures, lab, coworking, and collaborative projects.
## Outcomes
At the end of this course, you will:
- Use AI-based tools to learn and accelerate app development
- Define the structure of a web page utilizing the semantic hierarchical structural conventions of HTML5
- Apply CSS and HTML to implement page layout styles including grid, fluid, and responsive techniques; and to style content with color, typography, and images
- Utilize Javascript to make web projects interactive, such that user input is stored and processed to create updated and personalized content when a user interacts with a page
- Write JavaScript that leverages the fundamentals of Computer Science, the Object-Oriented Programming paradigm, basic data types, data structures, and basic algorithms, so that the code is efficient, error-free, and matches commonly accepted standards and practices of syntax and style, as measured by the code’s functionality and ability to pass a code linter
- Utilize industry-standard version control tools and workflows, including Git and GitHub, to write functional, properly styled code and to work efficiently and harmoniously in professional environments
- Be prepared for a Code 301 course
## Prerequisites
- Required: Familiarity with basic algebra concepts
- Code 101: Explore Software Development: If you are completely new to coding, complete Code 101 to build your first website using HTML and CSS and to find out if a career in software development is right for you
- Code 102: Intro to Software Development: Prepare for the Code 201 deep-dive with instructor-led labs introducing you to the professional tools of the trade, like git and the powerful VSCode text editor. Practice more with HTML & CSS, and learn basic JavaScript as you deploy themed websites with GitHub Pages
## Topics
Concepts
- Software development with AI tools
- HTML5 and CSS3
- Object-Oriented Programming
- Introductory Data Structures & Algorithms
- Document Object Model (DOM) Manipulation & Traversal
- Multiple Approaches to Page Layout
- Using GitHub Repos and Sharing Code With Project Teams
Languages
- HTML
- Structure
- Text
- Links
- Images
- Tables
- HTML5
- Forms
- Process
- Design
- CSS
- Color
- Text
- Boxes
- Lists
- Tables
- Forms
- Grid Layouts
- Fluid Layouts
- Animations and Transitions
- JavaScript
- Loops
- Conditions
- Functions
- Objects (Including Properties and Methods)
- Object-Oriented Programming
- Object Extension with Prototypes
- Events, Event Listeners, and Event Handlers in Callback Functions
- DOM Manipulation and Traversal Using "Vanilla" JavaScript
- Utilization of an external library such as ChartJS
- Local Storage and JSON
- The Basics of MVC
Environments and Tools
- Unix and the Command Prompt
- Git and GitHub
- A Text Editor
- Chrome Dev Tools
-
## Career Transition Services
Changing careers is about more than learning a new skill. In tandem with your software development education, you will receive powerful career-building strategic training so you can confidently start your job search as soon as (or even before!) you graduate.
Our Career Transition Services provide training, mentoring, leadership, and introductions to industry partners to help you become a more well-rounded software developer and a leader in your field. These services, which start in Code 201 and continue after Code 401 graduation, involve a series of events, workshops, and assignments that help you think holistically about your new career and take actionable steps towards success. Learn More »
## Material Requirements
You are required to supply your own computer that meets the requirements specified in our FAQ.
## Stacked Modules
Concepts in each of our courses are taught using stacked modules, where a new concept is introduced in each class session, building upon what came before it. This is a challenging style that requires persistence, practice, and collaboration, but allows more concepts to be introduced over the length of the course. This method helps students learn and retain more information in a short period of time. Learn more about stacked modules »
## Homework Policy
In order to pass the class, students must attain at least 90% of available points.
## Professionalism
Punctuality, participation in discussions, completion of assignments, and demonstration of professional courtesy to others are required, in accordance with our Code of Conduct. Attendance will be taken at the beginning of every class. Passing requires at least 90% attendance. Students should always contact the instructors ahead of time if they are unable to attend all or part of the published class/lab hours.
# 301: Intermediate Software Development
## Overview
Becoming a well-rounded developer is much more than learning language syntax.
In this intensive course, you will learn with AI to study the common core of software development, including the MVC pattern, object-oriented and functional programming, and computer science fundamentals such as basic data structures and algorithms. Come learn how to create and deploy web apps that leverage generative AI capabilities, built with the “MERN” stack (Mongo, Express, React, and Node.js).
This course includes a career coaching curriculum to get you ready for your job search. The course totals 160 hours, including lectures, lab, coworking, and collaborative projects.
## Outcomes
At the end of this course, students will be able to:
Collaborate with classmates and AI tools to design and create web applications from scratch using MVC patterns, built with professional-grade HTML, CSS, and JavaScript using the React JavaScript library
Build a new class of applications, with generative AI capabilities
Work with string, array, and object data structures and algorithms to solve code challenges with pure JavaScript programming
Build dynamic front-end and back-end applications deployed to cloud platforms
Explain the fundamentals of how the World Wide Web works, over the internet
Utilize dependency management techniques to build with third-party libraries such as ExpressJS and React-Bootstrap
Persist data in a NoSQL database, sourced from third-party APIs or user-generated content
Authenticate users using a third-party OAuth library
Follow agile software development practices during week-long sprints, including pair-programming, stand-ups, daily retrospectives, project management with Kanban boards, regular refactoring, and working in a shared codebase
Enroll in a Code 401 course or attain an entry-level website development job or internship by completing the course requirements
## Prerequisites
- Code 201
- Students with previous experience can test out of this requirement in their application. If you'd like to test straight into Code 301, please make sure you have experience with all of the topics listed on the Code 201 course page.
## Prework
Once you are accepted into the course, please complete the Code 301 Prework.
## Topics
Concepts
- Software development with AI tools
- Integration of generative AI models
- Web Request-Response Cycle
- Stateful DOM Management with React Components
- Express.JS
- JSON and 3rd-party APIs
- Persistence with MongoDB
- Styling Libraries
- Server-Side Routing
- Services and RESTful APIs
- Functional Programming
- AJAX and Asynchronous Programming
- MVC Architecture
- Authentication
- Deployment with cloud services like Heroku
Daily Practice in Data Structures
- Strings
- Arrays
- Objects
- Functional Programming
Languages
- CSS Frameworks
- Intermediate JavaScript
- React
Environments and Tools
- Unix and the Command Prompt
- Git and Github
- VS Code Text Editor
- Browser Dev Tools
- HTTP API Clients
- MongoDB NoSQL Database
- Auth0 Authentication
- Trello Project Management
# 401: Advanced Software Development in Python
## Overview
Learn the language used at NASA, Instagram, Dropbox, and other companies large and small – as you build professional-grade apps in Python.
Throughout this intensive course, you will study professional software development techniques and practices as you advance your skills in Python.
This course includes a career coaching curriculum to get you ready for your job search, plus job search assistance after graduation. The course totals 400 hours, including lectures, lab, coworking, and collaborative projects.
## Outcomes
At the end of this course, you will be able to attain an entry-level Python web developer job by:
Being able to take project ideas from conception all the way through full-stack execution and deployment using common Python frameworks and deployment tools
Contributing to existing and ongoing projects using professional version-controlled workflows, working in tandem with your classmates on collaborative assignments
Fully understanding the interaction between the code as it is written, the data on your machine, and the result that gets served to the client/browser
Writing secure web apps that can deter hackers from exploiting the most common vulnerabilities in your sites
Developing a portfolio of assigned and self-directed projects, as well as building your own code libraries of algorithms and data structures commonly found in computer science and software development
Regularly engaging in code review, attaining the ability to understand someone else’s code, collaborating with a team of coders of varying levels of experience, and suggesting improvements to the code base in question
Participating in a series of career development workshops and the web development knowledge, experience, habits, and practices learned in this course. You will create an online brand, network, and resume, and will demonstrate aptitude in personal and technical interviews of varying formats, in order to conduct a successful job search and obtain a job as a Python Web Developer
## Prerequisites
Code 301
Students with previous experience can test out of this requirement in their application. If you'd like to test straight into this course, please make sure you have experience with all of the topics listed on the Code 201 and Code 301 course pages.
All students are expected to complete the prework for this course before the first day of class.
## Topics
Python
- Software development with AI tools
- Syntax
- Classes
- Control Structures
- Lambdas
- Decorators
- Iterators
- Generators
- Using common patterns
- Object-Oriented Programming
- Functional Data Manipulation
- Open Source Contribution
- Data Analysis
- Numpy
- Pandas
- Scikit-Learn
- Machine Learning
- Linear Regression
- Sentiment Analysis
- Data Visualization
- MatPlotLib
- Plotly
Frameworks & Development Patterns
- Django
- The Admin Panel
- MVC Structure
- Project Structure as an Aggregation of Apps
- OWASP Top 10 Web App Vulnerabilities
- Virtual Environments
- Managing Dependencies
- Handling library version conflicts
- Deployment
- Static Site Hosts
- Cloud hosting options
- Dev Ops
- Docker Containers
- Front End
- React and NextJS with a Python backend
Collaboration & Open Source
- Pair Programming
- Group Projects
- GitHub
- Repositories
- Forking
- Cloning
- Pull Requests
- Collaborators
- How to Learn from Available Resources
Data Structures & Algorithms
- Linked Lists
- Stacks & Queues
- Graphs
- Trees
- Binary Search
- Sorting Algorithms
- Daily Whiteboard Interview Practice
## Career Transition Services
Changing careers is about more than learning a new skill. In tandem with your software development education, you will receive powerful career-building strategic training so you can confidently start your job search as soon as (or even before!) you graduate.
Our Career Transition Services provide training, mentoring, leadership, and introductions to industry partners to help you become a more well-rounded software developer and a leader in your field. These services, which start in Code 201 and continue after Code 401 graduation, involve a series of events, workshops, and assignments that help you think holistically about your new career and take actionable steps towards success. Learn More »
## Material Requirements
You are required to supply your own computer that meets the requirements specified in our FAQ.
## Stacked Modules
Concepts in each of our courses are taught using stacked modules, where a new concept is introduced in each class session, building upon what came before it. This is a challenging style that requires persistence, practice, and collaboration, but allows more concepts to be introduced over the length of the course. This method helps students learn and retain more information in a short period of time. Learn more about stacked modules »
## Homework Policy
In order to pass the class, students must attain at least 90% of available points.
## Professionalism
Punctuality, participation in discussions, completion of assignments, and demonstration of professional courtesy to others are required, in accordance with our Code of Conduct. Attendance will be taken at the beginning of every class. Passing requires at least 90% attendance. Students should always contact the instructors ahead of time if they are unable to attend all or part of the published class/lab hours.