Course

Course Summary
This apprenticeship is federal/state registered
Credit Type:
Apprenticeship
ACE ID:
SSTI-0006
Occupation Title:
Enterprise Agile: High Performance Computing
Organization:
Type of Apprenticeship Program:
Traditional/Time based
Estimated length of On the Job Training (OJT):
2 years (4,000 hours)
Estimated length of Related Training Instruction (RTI):
14 weeks (560 hours)
Dates Offered:
Credit Recommendation & Competencies
Level Credits (SH) Subject
Lower-Division Baccalaureate 3 Communications
Lower-Division Baccalaureate 3 Agile Project Management
Lower-Division Baccalaureate 3 Scripting Languages
Lower-Division Baccalaureate 3 Introduction to Programming in C++
Lower-Division Baccalaureate 3 Introduction to Web Development
Lower-Division Baccalaureate 1 Seminar in Computer Science
Lower-Division Baccalaureate 6 Internship in Information Technology
Lower-Division Baccalaureate 3 Introduction to Databases
Lower-Division Baccalaureate 3 Introduction to Software Engineering
Lower-Division Baccalaureate 3 Introduction to Cloud Computing
Lower-Division Baccalaureate 3 Introduction to Python Programing
Lower-Division Baccalaureate 3 Introduction to Unix
Upper-Division Baccalaureate 3 Decision Making
Upper-Division Baccalaureate 3 Advanced Scripting with Python (numpy and pandas)
Upper-Division Baccalaureate 3 Parallel Computing
Upper-Division Baccalaureate 3 Web Frameworks
Description

Occupation Description:

Work-based learning allows for students to get hands on learning and experience in an agile enterprise development environment utilizing multiple technologies and frameworks. Whereas in the Agile Enterprise courses the students learn in a simulated environment, on-the-job learning allows students to continue their growth and learn by working on real world projects. These two years of learning are an integral growth stage for a developer to choose their career specialization in years 3 through 5.

Program Description:

Students will learn High Performance Computing in an enterprise-agile environment, complete with product owners, scrum masters, and stakeholders.

This course focuses on practical knowledge of how to build robust and highly performant C++ web, middleware and backend systems for large enterprise applications and deliver test automation infrastructure. As a High Performance Computing Engineer, students will apply modern C++ engineering principles to build parallel processing applications geared toward algorithmic efficiency in data pipeline processing, utilizing C++ paradigms that allow RAII, Rule of Three/Five, code reuse, OOP encapsulation, generics and parallel programming.

Program Objective:

The program objective is for students to learn Cloud Development in an enterprise-agile environment, complete with product owners, scrum masters, stakeholders, etc.

Learning Outcomes:

  • Communications - The student will be able to conduct audience analysis; construct and deliver oral speeches; conduct small group instruction; execute basic speech and instructional skills; deliver an oral presentation using multimedia; and collect, analyze, and report data.
  • Agile Project Management –The student will be able to create a project charter; develop a business case that includes a requirements document; describe project management integration; identify stakeholders and define customer expectations; define project scope and work breakdown structure; develop a project schedule; develop cost estimates; describe methodologies for quality assurance; develop a human resource plan; develop a communication plan; perform risk assessment and mitigation; develop a procurement management plan; and utilize Microsoft Project software to manage a project.
  • Scripting Languages - The student will be able to discuss the basic techniques used to create scripts for automating administrative tasks; employ regular expressions in processing text; demonstrate the use of scripting languages to manage applications using networks; explain how to use scripting language to process other application's data; and show the use of scripting developing applications using networks and databases.
  • Introduction to Programming in C++ - The student will be able to demonstrate knowledge of the program development life cycle; design, develop, compile, debug, test, run, and document programs in the C++ language using a software development kit; design and develop programs using operators and assignments; design and develop programs using primitive data types; design and develop programs using sequence, selection, and repetition structures; design and develop programs using single and multi-dimensional arrays; design and develop programs using pointers; design and develop programs using void and value passing function; design and develop programs using object-oriented programming features, including defining classes and instantiating objects; design and develop programs using effective error and exception handling; and evaluate and critique effectiveness and efficiency of code.
  • Introduction to Web Development –The student will be able to explain Internet and world-wide-web concepts related to web development; code HTML5 web pages; create the body and content of a web page with HTML tags, attributes, values, e.g. headings, paragraphs, hyperlinks, images, tables, forms, etc.; demonstrate proficient use of CSS (Cascading Style Sheets) to format the appearance of web pages and provide layout; define web design best practices; create web page layouts using the most recent industry best practices; implement user accessibility best practices, e.g. mobile/responsive, people with disabilities, etc.; use W3C to validate HTML and CSS; identify recommended practices for web site promotion and Search Engine Optimization (SEO); create and use a JavaScript in a web page; incorporate multimedia and Interactivity into a web page; explain what acquiring a domain name, hosting, and publishing a web site entails; and publish a web site.
  • Seminar in Computer Science –The student will be able to analyze a complex computing problem and apply principles of programming and other relevant disciplines to identify solutions; evaluate the requirements for a specific programming problem and recommend solutions; create a program to meet the objectives; function effectively as a member or leader of a team engaged in activities appropriate to the task; identify and analyze user needs then create, integrate solutions in the computing-based project; demonstrate the application of knowledge and skill sets acquired from the courses and workplace in the assigned job function; exhibit critical thinking and problem-solving skills by analyzing underlying issues and apply to project challenges; and recommend ideas to improve work effectiveness and efficiency by analyzing requirements then considering viable options.
  • Internship in Information Technology – The student will be able to analyze a complex computing problem and apply operating system administration principles and other relevant disciplines to identify solutions; analyze a complex computing problem and apply principles of programming and other relevant disciplines to identify solutions; evaluate the requirements for a specific system configuration and recommend solutions; create a program to meet the objectives; function effectively as a member or leader of a team engaged in activities appropriate to the task; identify and analyze user needs then create, integrate solutions in the computing-based project; demonstrate the application of knowledge and skill sets acquired from the courses and workplace in the assigned job function; exhibit critical thinking and problem-solving skills by analyzing underlying issues and apply to project challenges.; and recommend ideas to improve work effectiveness and efficiency by analyzing requirements then considering viable options.
  • Introduction to Databases - The student will be able to input data into forms; download data sets for analysis; develop SQL reports; administer updates to the database management system (DBMS); and integrate the database with external systems.
  • Introduction to Software Engineering –The student will be able to describe software development and design methodologies; create software using traditional process models and agile processes; conduct requirements analysis and create a system requirement specification; develop use cases; create data and object models; diagram using various UML diagrams, and data flow diagrams, entity relationship diagrams; use software development and collaboration tools using version control software, diagramming software, communication software, and Kanban software; integrate API’s into a software application; create accessible and professional user interfaces; develop, integrate, and implement a multifaceted software application as a team; communicate with team members and other teams to collaborate and resolve conflicts; participate in code reviews and refactoring; conduct unit, integration, and validation testing; analyze security concerns; develop a system disaster recovery and back up plan; create Data Flow Diagrams and Entity-Relationship Diagrams; create and give a professional presentation; analyze and evaluate information in order to identify the need for research to draw conclusions, formulate inferences, solve problems and make decisions in the context of Computer Information Systems; and demonstrate information literacy by locating, evaluating, selecting, organizing, synthesizing, and ethically documenting information from multiple sources using both informal and formal formats, in the context of Computer Information Systems.
  • Introduction to Cloud Computing – The student will be able to explain the phases of transition from classic data center to virtual data center and then to the cloud; describe virtualization technology and compute, storage, network, desktop, and application layers in IT infrastructure; describe business continuity solutions in a virtual data center environment; explain the key characteristics, services, and deployment models of cloud; describe the cloud infrastructure components and service management process; describe the cloud security concerns and solutions; and list the key considerations for migration to the cloud.
  • Introduction to Python Programing - The student will be able to utilize the Python programming language format and structure in coding; understand and utilize Python programming concepts, including lists, dictionaries, classes, and loops; use Python libraries and tools; debug basic Python programs; and employ Python as a means for developing information security tools.
  • Introduction to Unix - The student will be able to describe the purpose and functions of a computer operating system; explain the function of UNIX-based commands; identify information about a computer's files using UNIX-based commands; identify network characteristics and status using the UNIX-based command line; and perform computer management functions.
  • Decision Making - The student will be able to use creative thinking to solve problems; develop strategies for risk analysis and risk mitigation; conduct situational analysis; use decision support systems; conduct backward planning; allocate resources to resolve problems; and apply ethics to problem-solving.
  • Advanced Scripting with Python (numpy and pandas) -The student will be able to use Python iterators and generators and recursive functions, making use of regular expressions, lambda functions and decorators; search and replace text with regular expressions, working with modules and packages including APIs; create and use in areas such as data analytics, machine learning and other advanced algorithms; learn metaprogramming, gaining good comprehension of the structure of XML and JSON; utilize libraries such as Numpy, Pandas along with other vector/matrices algorithms; create scripts which exchange data with a database; connect to databases and data sources whether SQL or NoSQL; and test methodologies and use the extensive functionality of Python modules, advanced Python workflow using professional practices.
  • Parallel Computing – The student will understand the technical and business motivation and need for current state-of-the-art computing systems to incorporate parallel processing into the hardware and software subsystems.; explain the Micro-Hardware Architectural Evolutionary Trends leading to on-chip instruction-level, parallelism, and pipelining, SuperScalar, multi-function unit parallel processing; understand the Macro-Hardware Architectural Evolutionary Trends leading to parallel processing including the recent progression in high-performance supercomputing architectures from clusters to grids and to clouds; explain data dependency analysis and hazards, and Amdahl’s Law, which limits the amount of practical speedup and scalability that can be achieved with parallel processing; perform design and analysis techniques for Parallel Processing Systems including the identification of data vs. task partitioning in algorithms and applications; understand the different models for implementing parallelism in computing systems such as shared memory and message passing; explain the software challenges associated with parallel processing including the difference between concurrent vs. parallel execution models, deadlocks and race conditions; and understand a sample of current parallel programming paradigms and languages and be able to write parallel programs using them.
  • Web Frameworks –The student will be able to identify the industry’s most popular client-side and server-side web frameworks and the programming languages used in each; describe how client-side web frameworks are used to speed up development time and create cross-platform, accessible, responsive, and dynamic user-interfaces and web sites; describe how server-side web frameworks are used to speed up development time and create dynamic web sites and applications; use a client-side web framework to create a web page/site; use a server-side web framework (web application framework) to create a web page/site; demonstrate the use of web frameworks to create cross-platform web sites, e.g. desktops, mobile devices, etc.; and utilize an Application Programming Interface (API) to add functionality to a web page.

General Topics:

  • Core C++
  • Standard Template Libraries
  • Parallel Programming
Instruction & Assessment

Instructional Strategies:

  • Classroom Exercise
  • Coaching/Mentoring
  • Computer Based Training
  • Discussion
  • Laboratory
  • Learner Presentations
  • Lectures
  • Practical Exercises
  • Project-based Instruction

Methods of Assessment:

  • Other
  • Presentations
  • Quizzes
  • Individual Assignments

Minimum Passing Score:

70%
Supplemental Materials