Course

Course Summary
Credit Type:
Apprenticeship
ACE ID:
GOOG-0005
Occupation Title:
Software Engineering
Organization:
Estimated length of On the Job Training (OJT):
18 months
Estimated length of Related Training Instruction (RTI):
574 hours
Dates Offered:
Credit Recommendation & Competencies
Level Credits (SH) Subject
Lower-Division Baccalaureate 3 Business Communications
Lower-Division Baccalaureate 3 Decision Making
Lower-Division Baccalaureate 3 Introduction to Programming
Lower-Division Baccalaureate 3 Internship in Information Technology, Software Development
Lower-Division Baccalaureate 3 Introduction to Web Design
Lower-Division Baccalaureate 3 Introduction to Software Engineering
Lower-Division Baccalaureate 3 Scripting Languages
Lower-Division Baccalaureate 3 Introduction to UNIX
Lower-Division Baccalaureate 3 Introduction to Databases
Lower-Division Baccalaureate 3 Computer Applications
Lower-Division Baccalaureate 3 Introduction to Information Management
Upper-Division Baccalaureate 3 Software Development
Upper-Division Baccalaureate 3 Web Frameworks
Upper-Division Baccalaureate 3 Portfolio Review
Description

Occupation Description:

Software Engineers work on complex computer science solutions, develop scalable, distributed software systems, and collaborate on smaller projects that have universal appeal.

Program Description:

Google’s U.S. Apprenticeships are paid work-and-study programs that provide on-the-job training at Google and related technical instruction through Multiverse, Google’s apprenticeship training provider. Upon program completion, apprentices receive a nationally-recognized credential certified by the U.S. Department of Labor. Google’s U.S. apprenticeships range from 12-20 months. They begin with a virtual onboarding experience, followed by an immersive bootcamp to build a foundational understanding of the profession. Apprentices will then join a Google team to train on-the-job, while continuing to engage in track-specific learnings and career workshops throughout the program.

Program Objective:

Apprenticeships contribute towards the development of digital skills by providing opportunities for work and study. They can serve as part of a journey to a meaningful career. During the program, apprentices get exposure to different areas and teams at Google while receiving external training and developing their professional skills on the job.

Learning Outcomes:

  • Internship in Information Technology, Software Development: The apprentice will be able to analyze a complex computing problem and apply operating system administration principals 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 the 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; demonstrate critical thinking and problem-solving skills by analyzing underlying issue/s and apply to project challenges; recommend ideas to improve work effectiveness and efficiency by analyzing requirements then considering viable options.
  • Scripting Languages: The apprentice 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.
  • Computer Applications: The apprentice will be able to create, organize, and manage electronic files and folders; create, modify, and maintain a word processing , spreadsheet, database, and presentation documents; use functions, formulas, and charts in documents, spreadsheets, and databases; and utilize applications and terminology effectively.
  • Introduction to Databases: The apprentice 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 UNIX: The apprentice 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.
  • Management Information Systems: The apprentice will be able to communicate using information system terminology; work with human resources to develop requirements requiring systems analysis; interpret maintenance data; categorize different data types; and analyze the data collection process.
  • Introduction to Web Design: The apprentice will be able to understand the structure and organization of webpages and websites; design basic web pages using html, css, and a scripting language; describe some ethical and legal issues related to web page design; use a hosting environment to upload and edit web pages; build and edit HTML 5.1 HTML syntax and tags; use a scripting language to handle events and HTML elements, and describe and use of web application development frameworks.
  • Introduction to Software Engineering: The apprentice will be able to describe different software development processes; describe and list the software development life cycle which includes software planning, requirements capture, design, build, documentation, testing, deployment, and maintenance; explore relationships between software engineering and other engineering disciplines (example electrical engineering, computer engineering, industrial engineering,......); modify basic software programs and verify functionality of all changes; troubleshoot and debug changes made to an existing software program; adhere to good coding standards and practices; analyze the functionality and performance of software application programs; use traditional software development process and testing tools, such as configuration management, interpreters/compilers and debuggers; summarize both ethical and professional responsibilities of a software engineer; convey technical material through oral presentation and written reports.
  • Business Communications: The apprentice will be able to demonstrate presentation skills; prepare effective business messages for culturally diverse audiences; communicate by written, oral, and visual methods.
  • Decision Making: The apprentice 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.
  • Web Frameworks: The apprentice 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 framework 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 sql and no-sql databases, such as SQLite/MongoDB, in the creation and, in support, of the framework; 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.; utilize an Application Programming Interface (API) to add functionality to a web page; use Node.JS/Python/Ruby scripting languages; and utilize the command line environment in Linux/UNIX.
  • Software Development: The apprentice will be able to describe different software development processes; participate in the software development life cycle which includes software planning, requirements capture, design, build, documentation, testing, deployment, and maintenance; understand the importance of capturing software requirements; make engineering design tradeoffs; work in a team to develop software; design and interface software modules; adhere to good coding standards and practices; investigate software quality and software quality assurance; work with version control, configuration management, unit/regression testing, issue tracking, and debugging tools; explore issues of software maintenance, reuse, and extendibility; look up standard software libraries (IEEE, SWBOK, ACM, etc); professional, ethical and social responsibility of a software engineer; evaluate the impact of potential solutions to software engineering problems in a global society, using the knowledge of contemporary issues and emerging software engineering trends, models (example unified modeling language), tools, and techniques; convey technical material through oral presentation and written reports.
  • Portfolio Review: The apprentice will be able to display responsible decision-making and personal accountability; develop and employ effective communication techniques; demonstrate ethical and moral practices; develop critical and reflective thinking abilities; demonstrate an understanding of group dynamics and effective teamwork; exhibit knowledge and awareness of diversity and resiliency; identify personal values of self and others; implement a variety of development activities in family care and personal financial management; and develop a commitment to continuing personal reflection and assessment.
  • Introduction to Programming: The apprentice will be able to create programs using fundamental concepts; identify programming's role in cyber operations; create flow charts and design and implement pseudo-code to solve problems; identify variable types and strings; analyze, create and compile programs; describe the use of classes and objects in programming; and explain vectors and create functions in programming languages.

General Topics:

  • Bootcamp
  • RESTful API apps with user accounts
  • MTA Frontend: HTML, CSS & JS, Software Development Lifecycle
  • Full-Stack Projects
  • Learning Launchpads
  • Career Readiness Workshops
Instruction & Assessment

Instructional Strategies:

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

Methods of Assessment:

  • Other
  • Presentations
  • assignment rubrics; competency skills checklists
Supplemental Materials