Software Development

Tool Developers Qualification Course (TDQC)

Overview

TDQC is designed for candidates who demonstrate strong problem-solving, logical reasoning, attention to detail, and computer literacy. The program is a strong fit for individuals who enjoy solving complex problems, designing processes, recognizing patterns, and thinking critically about outcomes. Previous experience with programming or using the command line and UNIX systems can be especially helpful, but it is not required.

Because TDQC is an intensive, 32-week program that progresses from foundational concepts to intermediate and advanced skills, successful students should be hard-working, diligent, and willing to ask questions when they are stuck or confused. Classroom instruction is paired with practical application, giving students opportunities to build their skills as they advance through each phase of the program. The program is divided into three phases. The first phase serves as a major filtering phase, clearly identifying those students who are unlikely to be successful in the program and allowing the sponsoring organization to remove them from the program with the least time and cost required. Phases two and three will focus on student progression into intermediate and advanced skills.

Schedule

160 Days / 1280 Hours

Who Should Take This Course

Prerequisites

Candidates should be screened/assessed for competence in the following, which are telltale characteristics of successful software engineers:

  • Spatial analysis
  • Pattern recognition
  • Basic algebra
  • Solid computer literacy
  • Word problems that test ability to extrapolate the information required to solve a problem
  • Ability to design processes to solve given
  • Ability to produce pseudocode with given keywords in order to solve a
  • Attention to detail
  • Ability to think logically and reason about There are many ways to test for this, such as syllogisms, logic puzzles, etc.

Audience

Additional screening/assessment of the following will be beneficial in selecting solid candidates:

  • Previous experience with programming is extremely helpful to students, but not a requirement.
  • Experience with the command line and using UNIX systems (OS X or Linux) is especially helpful, but not required.
  • Previous academic achievement
  • Current desires and hobbies
  • Self-assessment of why they think they will succeed in the course and after completion of the course
  • Given the length of the program, a student must be hard-working and
  • Willingness to ask questions when stuck or confused, which is a key predictor of success

Course Projects

Project #1 (Phase 1)

Students are tasked with writing a pair of programs to both decode and encode binary data in the form of packet capture (PCAP) files. The decoder translates the standard PCAP structure, plus a custom data format, into a human-readable version. The encoder program takes the human-readable format and translates it back into the binary PCAP format.

The project exercises the student’s understanding of processing textual and binary data without the need for more advanced understanding of data structures or algorithms. Even so, it requires the students use software design skills and techniques that they have been instructed in. It also foreshadows the use of PCAP files for dealing with network traffic, without requiring any knowledge of network programming.

Schedule

10 days / 80 hours

Project #2-1 (Phase 2)

Students are required to create a program that pulls out geospatial data from PCAP files, builds a graph of connected devices, and then looks for topological relationships between them.

The project calls back to the previous one: the software that will decode the PCAP files has already been written by the student in the previous project. The quality of work the student put into the first project will aid that student in this project.

The student is expected to demonstrate ability in data structures and algorithms, both to build the devices and their relationships, and to traverse the resultant graph.

Schedule

10 days / 80 hours

Project #2-2 (Phase 2)

The third project has the students developing a simple set of AI robots that explore multiple maps and harvest resources. These robots are based on the devices used in the second project, further strengthening the common thread of development.

Many learned skills are brought to bear on this project: a program must be able to traverse unknown maps, locate items of interest, and exploit any resources found. Executing the project successfully shows that the student has understood data structures and algorithms, as well as object-oriented programming and testing procedures.

Schedule

10 days / 80 hours

Capstone Project (Phase 3 / Cumulative Final Capstone)

Each student is given ownership of four machines running different operating systems and client software. They are then expected to handle an extremely large amount of network traffic coming into those machines that they must capture, process, and relay back to a central server, which functions as a real-time grading apparatus.

Over the course of four weeks, the requirements of handling the traffic change and evolve in response to specific events, requiring the student to manage and update software across different machines. In addition, other events happen that may decrease the capability of some of their machines, requiring the student to rebalance the load across them.

This final project simulates managing actual software in a production environment. Legacy software may be on obscure systems or in unfamiliar languages. Production problems occur at unusual times. Requirements change and need to be implemented while not disrupting existing services.

This capstone also exercises all of a student’s curriculum-gained skills: programming, data structures, algorithms, object-oriented programming, assembly programming, and networking.

Schedule

 20 days / 160 hours

Program Structure

The program is structured as follows:

Phase 1 Weeks
Discrete Math and Version Control 1
Python I 2
Introduction to C 2
Intermediate C 2
Phase 1 Project (C & Python) 2
Phase 1 Total 9
Phase 2 Weeks
Data Structures & Algorithms I 2
Data Structures & Algorithms II 2
Phase 2 Project 1 2
Object Oriented Programming Using Python 2
Phase 2 Project 2 2
Phase 2 Total 10
Phase 3 Weeks
Operating Systems 2
x86 Assembly Using C 2
SQL Development in Python 2
Network Programming in C 2
Introduction to Cryptography, Agile, Scrum 1
Capstone Project 4
Phase 3 Total 13
Program Total 32
Search UMBC Training Centers