Course Content
Course Packet
This is a detailed Breakdown of the Course curriculum
0/1
Software Engineering Program (Full Time)

Introduction

The Institute of Techgronomy offers a competency-based certification program in the Software Engineering field. The Institute of Techgronomy Software Engineering program will teach students the scope of skills necessary to become a software engineer. Software engineering is about building and ‘engineering’ software and the technical infrastructure that supports software – everything from large and complex data sets to advanced algorithms. It is, at the core, about solving problems and designing systems that function in the desired manner or that solves a problem.

This program focuses on software engineering principles, as well as strong fundamentals in data structures and algorithms. Learners will cover fundamental computer programming concepts including arrays, strings, algorithms, pointers, hash data structures, and software architecture, before moving on to focusing on front-end and back-end languages including JavaScript, using the terminal, C, Assembly, Shell, virtual machines, sockets, C++ and object-oriented programming, Elixir, network programming, Redis, and advanced algorithms and data structures. Our projects include a focus on software architecture, object-oriented design, and advanced back-end programming. Learners are also expected to complete 30-40 technical interview role plays to prepare for real job interviews, and undergo resume and cover letter reviews similar to peer code reviews. Overall, our Software Engineering program is designed to train learners to Silicon Valley standards in software engineering with an emphasis on structured problem solving, critical thinking, and extensive preparation for meeting employer demands for entry-level jobs.

Students Will Learn…
  • Advanced algorithms
  • Advanced data structures and databases
  • C++/OOP
  • Elixir
  • Network Programming
  • Sockets
  • Shell Virtual Machines
  • Javascript
  • RESTful APIs, software architecture,
  • Structured problem solving and debugging,
  • Extensive use of industry-standard tools such as Git, IDEs, and terminal commands.

 

What to Expect

A 12-month remote training program
Students will gain experience building and developing software. By the time students complete the program they will earn an industry-standard certification in Software Engineering from Institute of Techgronomy.

No tests, only projects.

Each focus of this program will involve completing projects in teams as well individually to ensure students are learning and applying their knowledge.

Build apps and sites with groups and on your own

Our projects include a focus on software architecture, object-oriented design, and advanced back-end programming. Work in groups and complete individual portfolio projects.

Showcase projects to recruiters

Students will showcase approximately 5 to 20 projects representing thousands of lines of code for employers and interviews.                                                  

40-hour-per-week time commitment

Students will need to devote 40 hours a week minimum in order to fully learn the content necessary to pass the course and become a data scientist.

 

Write ~100K lines of code across 20 projects

On average, students will write about 100,000 lines of code as they complete exercises, software projects, and coding challenges throughout the program. This high-quantity coding means students develop confidence in their code and applied software architecture design and implementation experience.

 

Interview training

As part of this program, students will complete technical interviews to prepare for job applications. Students will be guided on how to navigate challenging technical interviews including whiteboard coding.

Materials required for this course

  • Must have a high school diploma or GED equivalent
  • Be fluent in conversational English
  • Must be familiar with computer systems
  • Must have a working computer, internet access, and basic calculator
  • Familiarity with code is recommended
  • 15+ hours a week to devote to coursework and projects

Technical Requirements & Specs

  • A computer running a compatible web browser (see below)
  • Stable Internet connection (video interaction is not available offline)
  • Speakers/headphones, microphone, and web-camera to hear audio from a computer (videos have subtitles as an alternative)
  • Lessons can be completed on any desktop computer, smart phone, or tablet

Students will also need to ensure they have permission to download the Zoom app to the computer (e.g., if using a loaner or shared computer such as in a library) Supported Web Browsers Google Chrome and Firefox.

Performance will be suboptimal on Internet Explorer; Windows users should download Chrome or use Microsoft Edge (included in Windows 10).

About Competency-based Learning (or Mastery-based Learning)

Our programs and learning methods use competency-based learning, meaning that the goal for the learner is to become competent in a given skill, not to pass a test. They are expected to be able to perform the skill as they would in a job, to an acceptable level, with confidence that they are capable of doing the task.

Passing a test at 75% or even 95% or memorizing information is not reflective of what is required to be a successful developer, analyst, or engineer.

What’s important is being able to solve problems, work collaboratively, thinking critically all the time as well as being able to identify and solve security issues quickly and effectively.

For example, in cybersecurity personnel, companies, and even countries and governments, do not want employees who are 85% competent at their job: who wants to stop a hacker from accessing only 85% of your information or database? No one – they should be completely stopped. If cybersecurity training never pushes learners to be fully competent, how will they suddenly become so on the job at a crucial time when they are expected to perform at full competency? The same goes for things such as autopilot: being competent at computer programming truly matters.

It’s no surprise that employers prefer candidates who have gone through competency-based training.

The Limits of Passive Learning

The learning curve is notoriously deceptive for learners, and can be incredibly costly for employers. Learners tend to think that receiving a lot of information is equivalent to significant learning, when in fact, learning by doing and through repetition is indicative of significant learning.

Providing a series of lectures or even online videos provides information, but with a 10% retention rate of passive learning, learners aren’t actually competent or efficient at performing a task related to the subject area. As a result, passive learning involves a steep learning curve on-the-job, which costs employers in salary, low efficiency, and possibly worse with costly on-the-job errors.

Here is a concrete example tied to coding. Companies use a version control system (VCS) for managing code, and the vast majority use a Git system. Using Git repositories, however, is not straightforward the first few times, especially when working in teams or groups. Since most professional engineers and developers work in teams, knowing how to use Git in a group setting is essential. Receiving an explanation of how to use Git is not sufficient. Learners need to decide how to structure and name their branches of code (sub-sections within the larger code repository), how to divide their work and unite their code, how to merge changes and additions to the code, and how branch permissions actually function. Making an error here can be extremely costly, up to all code and work is lost.

At Institute of Techgronomy, we want learners to make errors during our training programs, and not on the job. Learning to use Git is an example of endless situations where learning by doing results in a more competent employee than passive learning where much of the learning curve is yet to be done.

Project-Based Learning

Project-based learning is an approach to how a person learns that involves providing projects or problems that need to be solved, built, or created.

Learners use the problem as a launching point for researching new concepts, using trial and error, building solutions and learning as they build, evaluating the options available, making decisions about which solution to pursue, and more.

Active Learning

Project-based learning at its core focuses on the learner, not on an instructor or a professor or a teacher delivering knowledge. Project-based learning and peer code reviews are part of active learning: learners must actively participate, engage, and respond. This is different from passive learning such as lectures, presentations, MOOCs, or watching online videos.

Active learning requires learners to analyze, evaluate, and create. The majority of our curriculum is made up of projects which are essentially problems in the form of “build a solution for XYZ.” As learners research, analyze, build, test, and fix, their engagement is through the roof compared with passive learning and the retention rate is closer to 90% (compared to passive learning at 5-10%).

The Project Based Learning Spectrum

Many other tech learning providers claim to do project-based learning, however, just because their learners do one or two projects, it does not mean that they are doing project-based learning.

Above shows a spectrum of project-based learning: any form of knowledge transmission by a single source of truth (e.g. instructor or professor) takes away from the need to research, analyze, or evaluate, meaning learners don’t build critical thinking or problem-solving skills. If you aren’t solving problems but are asking for answers from an instructor, then you are hindered in developing problem-solving skills and learning how to be resourceful.

One of the most important things you need to learn to future-proof yourself is how to learn: unless you’re doing real-project-based learning, you will depend on someone else to provide answers for you.

Peer Learning

Peer learning is how and why learners learn from their peers, whether it’s in a formal learning context or not.

In today’s world, access to knowledge has changed and people are continually learning, growing both their knowledge base and their skills base. In a work environment where projects are king and collaboration is key, people have many more opportunities to learn from their peers naturally as part of their work.

Learning from peers could come in the form of asking for help to debug, sharing useful resources for a given project or exercise, peer code reviews that look at functionality and code quality, or working on a project together and sharing different approaches to the same problem.

Peer learning has high engagement, is much more social and interactive, and more fun than passive learning in a lecture.

Why Use Peer Reviews

Students learn in being reviewed and in reviewing, and are operating at the top four levels of the skills pyramid. They must evaluate, analyze, think critically, and create ways to break the submitted solution and construct tests. The peer review process naturally fosters 21st-century skills. Project-based learning and peer code reviews are part of active learning: learners must actively participate, engage, and respond. This is different from passive learning such as lectures, presentations, MOOCs, or watching online videos.

The Peer Learning Spectrum

Many learning systems use a single source of truth or knowledge – a professor or an instructor – as the person who provides answers to particular problems, system designs, or questions. This discourages critical or analytical thinking and creativity.

In a peer learning system, having multiple sources of truth, in addition to significant knowledge access via the internet, learners need to think critically about what is important and why, possible solutions and why they would or would not be good choices, and different ways to solve the same problem.

Using a peer code review system exposes learners to new ways of solving the same problem of different architectures and code structures.

Peer Learning and the Learning Community

In giving and receiving peer reviews, students learn how to communicate about their work and how to give and receive feedback. This is important for developing soft skills as well as preparing for the workplace where peer reviews are generally part of tech jobs.

By participating as a reviewer and a reviewee, learners contribute to the overall learning community. Reviewers also receive feedback from reviewees, providing motivation for reviewers in a manner similar to what occurs in the workplace.

Similar to the process for reviewing academic articles, the peer review process is the evaluation of submitted work by your peers who are competent in their field of knowledge. The peer review process requires analysis, critical thinking, and creativity in order to evaluate submitted work.

The reviewee may have to explain what they have done and why, which helps them to develop communication skills. Reviewers need to understand quickly and identify possible areas where the submitted work does not meet project criteria, standards, or best practices.

TIPP – Technical Interview Preparation Program

Learners join our Technical Interview Preparation Program as they begin working on some of their final projects in the data science track. Learners do 40+ technical interviews to prepare for job applications.

Learners will play the role of both an interviewer and an interviewee as they complete 40 role play situations. Interviewers are given the topic or challenge question as well as the answer to the question in their documentation for each role play. Interviewees do not receive any advanced information until they arrive at the interview where they must complete the challenge.

The point of interview practice is to develop specific skills in structured problem solving AND in communication. Practicing the art of communicating your thoughts is vital to successful interviews.

Learners are to treat the role play situations as real-life interviews, meaning you adhere to professional practices, time requirements, and general interview guidelines.

Following the interview, interviewers will complete a review of the role play exercise, providing helpful feedback for the interviewee.

This is one of the most unique elements of this program, as well as one of the most effective interview training programs in industry.

Course learning objectives

  • Upon successful completion of this course, a student will meet the following outcomes:
  • Investigate the complexity of professional coding practices and comply with corporate coding standards
  • Demonstrate ability to recognize and reproduce software engineering best practices and receive feedback
  • Identify basic coding challenges and develop the corresponding problem solving skills to resolve them
  • Manage control flow in programming.
  • Handle scalars (int, char, string).
  • Apply memory address management.
  • Demonstrate knowledge of basic Data structures (arrays).
  • Apply the Agile methodology to manage a project by breaking it up into several phases.
  • Establish and maintain a constant collaboration with stakeholders for continuous improvement.
  • Select, differentiate, and analyze professional web development tools, techniques, and frameworks
  • Demonstrate knowledge of industry best practices to be used to train others in their implementation
  • Develop problem-solving skills appropriate for a Software Engineer and determine best solutions for evaluation and decision making applied to existing industry problems
  • Use a professional code editor for building and debugging modern web and cloud applications.
  • Use the industry standard version control system for tracking changes in computer files and coordinating work on those files among multiple users.
  • Use a command line interface to interact with systems, control cloud based systems, and launch development and testing environments.
  • Implement best practices for peer code review.
  • Design and customize responsive mobile-first sites with Bootstrap, mixing responsive grid systems and extensive prebuilt components.
  • Build user interface using efficient, and flexible JavaScript library.
  • Compose complex UIs from small and isolated pieces of code called “components” using ReactJS.
  • Use web framework Flask to write web applications.
  • Apply web security best practices, and efficiently use the framework to avoid common mistakes.
  • Create scalable web applications to be run in professional environments.
  • Use open-source Python web framework (Django) for rapid and efficient development of secure websites.
  • Apply Object Oriented Mapper technologies and SQL.
  • Apply fundamentals of software architecture to organize system components.
  • Apply Agile methodology to manage a project by breaking it up into several phases.
  • Establish and maintain a constant collaboration with stakeholders for continuous improvement.
  • Complete technical interview questions using the Question / Writing / Answering method

Course meeting schedule

Season

Project Name

Description

Preseason

Bootcamp Javascript

 

Preseason

My bouncing box

 

Preseason

My css is easy

 

Preseason

My first backend

Build api that replies to different routes, URL naming structures

Season 1 Software Engineering

Bootcamp C

The coding environment, using the terminal functions, loop statements, types, variables, pointers and strings, arrays and pointers, memory allocation/structures, basic and more complex algorithms, a nested loop with if statements, advanced shell, pipe, multiple commands, 2D arrays and strings

Season 1 Software Engineering

My PrintF

Unlimited arguments, conversion between types and bases

Season 1 Software Engineering

My LS

Unix, architecture, folders and files, sort algorithms, makefile

Season 1 Software Engineering

My Tar

Create archive (zip), how folders and files are made, compliance with POSIX architecture

Season 1 Software Engineering

Readline

String manipulation, read, system call, using instructions that are hardcoded into the CPU

Season 1 Software Engineering

My Blockchain

Linked lists, graphs, parsing of command line, creating a graph that is the data structure behind a blockchain (linked list of linked list)

Season 1 Software Engineering

Core War

Creating virtual machine and compiler that transforms code from Assembly to binary, create parser, create compiler, create virtual machine that executes binary code

Season 2 Software Engineering

Redis Class

Recoding Redis in Ruby with hash data structures

Season 2 Software Engineering

CSS is easy I

Basic CSS with flexbox

Season 2 Software Engineering

ZSH

Parsing, command line, execution of command line, Unix processes (forks and piping)

Season 2 Software Engineering

LibASM

Redoing C library in Assembly

Season 2 Software Engineering

SQL Lite

Redcoding a database and implement an SQL parser (Uses hash data structure)

Season 2 Software Engineering

Malloc (Memory Allocation)

Linked lists, hash tables or trees to optimize memory given to a user, speed of execution of commands, software for hardware areas

Season 2 Software Engineering

Redis

C, coding Redis database Q value with features for hash, command line interface

Season 2 Software Engineering

My FTP

Server-client sockets, protocols, network programming, asynchronous, protocol FTP, file transfer, protocols, network programming, asynchronous, protocol FTP, file transfer,  implementation of RFC

Season 2 Software Engineering

My Curl

Client Socket, protocols, network programming, HTTP, HTTP Header

Season 3 Software Engineering

Bootcamp C++

Syntax, begin OOP, classes, references, instances, methods

Season 3 Software Engineering

Abstract Virtual Machine

Recode a simple virtual machine in C++, heritage (a concept within OOP), change how you think about programming, docker and containers

Season 3 Software Engineering

My Chat

Client-server, connection between servers, implement RFC-MIRC, chat-room management

Season 3 Software Engineering

My Bsq

Rule-based vs probability-based algorithms

Season 3 Software Engineering

My Bc

Rule-based vs probability-based algorithms

Season 3 Software Engineering

My Mouse

Rule-based vs probability-based algorithms

Season 3 Software Engineering

My System Admin

Docker, install web server with database, server that delivers a website that has to connect with a Postgre Server

Season 3 Software Engineering

My Rabbit MQ

Elixir, syntax, functional programming

Season 3 Software Engineering

My Skype

Client-server and transfer of text, voice, and video via the network, creation of binary protocol, significant, use of audio library and codec library, building a large project

Season 4 Software Engineering

Open-source Project

 

Season 4 Software Engineering

Final Project

Kernel

What is Live Coding Session

Live coding is an event we host where we solve a coding problem in front of learners. The key here is to share our thought process, and how we code. This live coding could be made by a technical of Institute of Techgronomy or by another student of the community. These sessions will happen once a week on Tuesday. Learners are informed about the project in advance so they can prepare any questions or any blockers they had while building the project.

Structure: The session is a remote live video call that can last for 1 or 2 hours.

Goal: The goal is to make a concept easy to understand for learners, especially if they are beginners, and share with them good practices.

What is Coding Collaboration Session

Coding collaboration sessions are designed to help students learn to work together. During each session, students of all levels are divided into small groups to work on a timed challenge. Each group will focus on a unique task and, at the conclusion of the session, will share their learnings with the other groups. At the end of the meeting, there is also a quick “Skills Check” quiz to present students with common terminology and questions that they may experience during an interview. This quiz does not count towards the Institute of Techgronomy curriculum as the question difficulty varies greatly and students are not expected to know all answers. These sessions are held once a week on Thursday.

Goals:

  • Improve teamwork and critical thinking skills
  • Build presentation skills
  • Expose students to common interview questions and terminology
  • Build community among students

Timeline

  • Break into small groups (3-4 students) and assign projects: 10 minutes
  • Groups work alone in breakout rooms: 20 minutes
  • Program Manager reviews current work: Approx 15 mins (5 min per group)
  • Groups return to main call and share work: 10 min
  • Students take Skills Check and leave call once completed: 5 min

Course assignments by week (spreadsheet of what to complete each week)

 

 

 

Week

Assignments By Week

1

Bootcamp JS – Quest 01

Bootcamp JS – Quest 04

Bootcamp JS – Quest 02

 

Bootcamp JS – Quest 03

 

2

Bootcamp JS – my moving box

my levenshtein

Bootcamp JS – Quest 06

my spaceship

Bootcamp JS – Quest 07

 

3

My hamming DNA

 

My moving box realtime

 

My robot simulator

 

4

My bouncing box

 

My css is easy

 

My first backend

 

5

Project 1: Bootcamp C

 

Quest00

 

Quest01

 

6

Quest02

 

Quest03

 

Quest04

 

7

My Square

 

Quest05

 

Quest06

 

8

Quest07

 

Quest08

 

My Cat

 

9 & 10

My Christmas Tree

 

Project 2: My PrintF

 

 

 

11 – 12

Project 3: My LS

 

 

 

 

 

13 – 16

Project 4: My Tar

 

 

 

 

 

17 – 18

Project 5: Readline

 

 

 

 

 

19

Project 6: My Blockchain

 

 

 

 

 

20

Season 2 Software Engineering

 

Bootcamp Ruby

 

 

 

21

Bootcamp Ruby

 

My BSQ

 

 

 

22 – 23

My BSQ

 

 

 

 

 

24 – 25

My BC

 

 

 

 

 

26 – 27

My Mouse

 

 

 

 

 

28 – 30

My ZSH

 

 

 

 

 

31

My CSS is Easy

 

My SQLite

 

 

 

32 – 33

My Curl

 

 

 

 

 

34-36

My LibASM

 

 

 

 

 

37 – 41

My Malloc

 

 

 

 

 

42

Season 3 Software Engineering

Season 3 Rust

Bootcamp C++

Bootcamp Rust Arc 1

 

 

43 – 44

My Abstract Virtual Machine

My String

1 technical interview per week

My Mastermind Rust

 

 

45 – 46

My FTP

Bootcamp Rust Arc 2

1 technical interview per week

My Ping Server

 

 

47 – 50

My Skype

My Redis Client

1 technical interview per week

My Redis Server

 

 

51

Season 4 Software Engineering

 

Project 23: Open-source Project

 

 

 

52

Project 23: Open-source Project

 

2 technical interviews

 

 

 

53

Project 24: Final Project

 

2 technical interviews

 

 

 

 

Attendance, Probation, and Leave of Absence

Attendance Policy

Institute of Techgronomy’s programs are designed to prepare students for a career in the technology industry and are modeled after what a typical work day may look like. For a student to be successful in this role, they must demonstrate responsibility and reliability. Employers define this as punctuality, regular attendance, and consistent progress. It is expected that students establish these good habits and attend each required Institute of Techgronomy meeting. Required meetings depend on the student’s active program and will be communicated before their initial start date. Students are also expected to be on-time and communicate any conflicts in advance with their program manager. Repeated absences could result in disciplinary action, up to and including dismissal from the program. Students must maintain at least a 75% daily attendance record to be considered in good standing. Excused absences do not count towards this figure. Falling below this level may lead to probation and the need to establish a working plan with the student’s program manager.

Probation and Dismissal Policy

Institute of Techgronomy Silicon Valley reserves the right to discipline or dismiss any student whose attendance, academic performance, or professional conduct does not meet the standards established by our rules and regulations. A student may be placed on probation for consistently failing to meet attendance or academic standards. Any student on probation must meet with their program manager to establish a learning improvement plan before continuing their curriculum. A student risks dismissal if they continue to not meet the guidelines established in their improvement plan. Any student who has been dismissed may appeal the action within 15 days of the initial dismissal. To file an appeal, a student must send an email to their program director or administrator explaining their reasons or grounds for appealing their dismissal. In the event of dismissal, all tuition through the current month will remain due. If a student has paid in advance, funds outside of the current billing cycle will be returned within 30 days of dismissal.

Leave of Absence Policy

If a student would like to take a “Leave of Absence”, they must submit an email to their program manager with their reason for request, expected return date and initial date of request. This does not automatically ensure Institute of Techgronomy’s approval and is not considered valid until approval has been granted. A leave of absence may not exceed 60 days and only one will be granted for any given student during a 12-month rolling enrollment period. Upon approval, no tuition is due until the student returns. The Student may resume the program at any time, but in the event the student resumes the program before the expected return date, tuition fees become payable. Upon return, the student must meet with their program manager to re-establish course completion goals.

 

 

 

Exercise Files
Software Engineering Full Time Course Packet.pdf
Size: 212.62 KB