Programming & Mobile Applications

Everyone has a passion, and some people love technology! Do you love developing mobile apps, video games or working with robotics equipment?  If so, then the Programming and Mobile Applications program might be right up your alley! 

The State of Michigan has a shortage of IT professionals. Why not turn your interests into a high-paying information technology (IT) job or career?  As part of this program, students will gain skills that both colleges and employers require you to have.  When it's time to take the knowledge you have learned at the Wilson Talent Center into the real world, you'll be ready to compete in some of today's most exciting careers such as game designer, application developer, robotics engineer or website developer to name a few.

All skills, projects and software used in the is class are reviewed by an advisory board of local IT experts to ensure you learn the skills you really need to be successful in the future.

View the Articulated Credit Sheet for Programming & Mobile Applications.

Our mission is to provide students with the essential knowledge, skills, and work habits to excel in their careers and future learning.

Course

Programming & Mobile Apps

National Career Cluster: Information Technology
Michigan Career Pathway: Business/Management/Marketing & Technology

Instructor                                                       

David Baker
517.244.1322

Pete Eisinger,  Instructional Assistant

Types of Credit

Fourth year math credit
½ - 1 English Language Arts credit
Elective Credit
Credit recommended by WTC awarded by sending school

Articulation Agreements

Lansing Community College
Baker College
Davenport University
Ferris State University
Washtenaw Community College

Special Requirements/Program Prerequisites

This program may be taken as a one or two year program by both juniors and seniors. The program is designed to give students marketable skills in the areas covered as well as prepare them for careers and college.  Students may return for a second year to focus their learning on their specific interest areas.

Students entering the program should demonstrate the following skills.

  • Good communication skills, including reading and writing at grade level.
  • Good attendance (no more than 2 absences each term)
  • Strong understanding of Algebra concepts
  • Positive attitude and a sincere interest in Programming and/or Robotics (no previous experience required).

Course Topics

Academic (Mathematics, Reading, Writing and Study Skills)

Students will complete assignments in class to improve their math, reading, and writing skills.  Because this class integrates math with many assignments, math credit is available (see pg 1) for most students. Math, reading and writing skills are integrated into class assignments and projects.  Study skills are taught and integrated in all assignments.  Students will learn how to apply critical thinking skills to solve problems that seem difficult at first glance.  Second year students will be part of writing composition course that focuses on content related technical writing.

Career and Job Preparation

All students have the opportunity to demonstrate their knowledge by presenting their projects and receive business feedback in our class Showcase held each spring.  The showcase is judged by a variety of IT professionals and parents are encouraged to attend.

Students create a portfolio of team and individual work which they use during job interviews. Students also create resumes, cover letters and learn how to properly complete job applications. Students explore their personal values and strengths, learning styles and abilities as they relate to their career interests.   Information technology related business visits, guest speakers and job shadows provide more information on career interests.

Students may choose to compete in Information Technology and Business skill competitions by joining our Business Professionals of America (BPA) chapter.  Students can compete in regional, state and national competitions as well as become a chapter or state officer. BPA members increase their confidence and skills by solving real business related problems.  Students will also have the opportunity to participate and compete in other organizations and competitions including, Square One, Vex Robotics or other programming competitions.

Computer Programming

Students will learn the Key Programming concepts, including Procedural Programming and Object Oriented Programming; using Java Programming Language, students will have the opportunity to learn other languages as well including C++,C#, Python and JavaScript..  As we learn the basic concepts in Procedural Programming students will get exposure to basic microprocessor design, and computer architecture. Students will learn about the Software Development Lifecycle and how to plan and manage a larger scale programming project on teams.    At the end of the year students will put what they learned together to create a project of their choice (Robotics, Game Design, Mobile Application Development, Website Design etc).

Exit Outcomes

  • Proficient use of computers and computer software.
  • Design, development and high quality of effective high quality interactive computer programs.
  • Teamwork and leadership skills.
  • Exploration of careers pertaining to student’s interests and abilities and preparation for higher education.
  • Business etiquette skills.
  • Employability skills to seek, obtain, and keep a job.

Work Based Learning Opportunities

After attaining adequate skills and knowledge in their career area, students that demonstrate employable work habits will be placed in work experiences as those positions are available.  We strive to provide students with a job shadow or work experience in the area of their career interest depending upon the availability of appropriate opportunities. Students benefit from trips to businesses, colleges, and guest speakers.

Grading Policy

We will have a strong emphasis on student self evaluation and teaching students how to become independent lifelong learners. According to studies one of the most effective ways in helping students learn is to have students constantly self evaluate themselves and drive their own learning, another is to have high expectations. Both of these will be major focuses in our class along with providing students real industry like experience including design reviews and working  on group projects.

The Programming class is one of many classes that have shifted class grades to be based on providing evidence for several Essential Competency Areas (ECA's). The term used to describe this grading style is Evidenced Based Reporting (EBR). The goal of EBR is to have a report that is easier to see what areas a student is excelling in and what areas are opportunities for growth. Within the EBR system, students have multiple opportunities to show evidence for each ECA.

Essential Competency Areas (ECA's):

Employability Skills: Essential skills for maintaining employment (Attendance, Critical Thinking, Coachability, Work Ethic, and Interpersonal Skills.)

Searching for Information:  Ability to relearn previous material or learn new information and apply it to a situation.

Debugging: Troubleshooting code and figuring out what is causing errors and fixing the errors.

Documentation: Writing clear, readable and easily maintained code.

Concept Implementation and Understanding: Ability to apply programming concepts to different situations and understand and explain concepts to peers.

Rubric:

Target:

Year 1: MP1 MP2 MP3 MP4 MP5 MP6
Employability Skills P P P P P P
Searching for Information D D D AP AP AP
Documentation D D AP AP P P
Problem Solving/Code Implementation D D AP AP P P
Debugging NE D D AP AP A
Year 2: MP1 MP2 MP3 MP4 MP5 MP6
Employability  P P P P P P
Searching for Information AP AP AP P P P
Documentation AP P P P P P
Problem Solving/Code Implementation AP P P P P P
Debugging AP AP P P P P

Rubric:

Searching for Information

D: Can find examples in the lecture notes/past practice problems, and apply them to different scenarios.

AP: Can use other resources (Google) to find simple examples of how to do something not explicitly taught in class. These include things like how to round up in Java where there is normally a less than 5 line implementation of how to do what the programmer wants to be able to do. Very minor if any adaptation of the example code would need to be done to fit the intended use case.

P: Can use other resources to learn how to do something not explicitly taught in class. These include things that require the programmer to make adaptations of the examples found to be able to be used or the intended purpose.

E: Can use other resources to learn something not explicitly taught in class, and understand it well enough to be able to both explain it to someone else and apply the concept to multiple use cases.

Documentation

D: Consistently creates variable names following a naming convention and the variable /object/class/method names are descriptive of the data they are holing or function they are providing, code is properly indented to show scope.

AP: Evidence of everything under Developing and comments are used to indicate intended purpose of the code both for methods and any section of complicated logic.

P: Evidence of everything under Approaching Proficiency and used Java Docs and region tags to improve comments, uses programming concepts (methods, inheritance, etc.) to follow the DRY (Don't Repeat Yourself) principle, code avoids excessive nesting.

E: Consistently shows evidence under Proficient and explains choices they made from a readability and functional standpoint.

Concept Implementation and Understanding

D: Can write code given detailed pseudocode or a flowchart. Can verify if the code works if given test cases to check the code with.

AP: Can identify boundary test cases but some help may be needed to think of additional test patterns. Can use the test cases to create pseudocode/flowchart for simple problems but may need help when working on problems with  more complex logic. Can create code from flowchart/pseudocode if starting with a detailed flowchart/pseudocode.

P: Can correctly identify all/nearly all potential patterns to test for and create test cases for those patterns. Can use those test cases to systematically come up with pseudocode or a flowchart for any problem where the implementation of the code is not immediately known. Can create code from the flowchart/pseudocode that correctly passes all of the test cases created. If needed this process is repeated on smaller chunks of the code until all the code can be implemented.

E: Meets all requirements from Proficient and writes code that follows good coding practices regarding readability, maintainability, etc. Is able to justify design decisions made in the code.

Debugging:

D: Is able to identify and fix syntax/compilation errors.

AP: Is able to use the debugger and breakpoints to step through the code and find and fix logical errors, including things like infinite loops or control flow errors or common runtime exceptions like Null Pointer Exceptions.

P: Is able to use the debugger and/or Google to debug uncommon exceptions or errors. Also can use debugger to systematically identify what is causing a logical error when the cause might not be straightforward.

E: Is able to use the debugger to be able to debug more complicated errors that are caused by multithreaded code.

Employability Skills:

Developing (DV) Approaching Proficiency (AP) Proficiency (PR) Exceptional (EX)
I can demonstrate employability skills when prompted with support. I can demonstrate employability skills consistently with occasional prompting according to industry standards, as described in the success criteria. Learning Target: I can demonstrate employability skills consistently and independently according to industry standards, as described in the success criteria. I can demonstrate employability skills consistently and independently according to industry standards while providing guidance to fellow students.

 

Success Criteria Success Indicators
Attendance
  • Arriving to class on time each day
  • Having no more than 2 excused absences in a marking period
Work Ethic
  • Self-disciplined to remain focused, engaged and on task for the duration of the class period
  • Working responsibly without supervision
  • Completing tasks accurately and on time
  • Accept responsibility for actions
  • Dresses appropriately and maintains proper hygiene appropriate for the workplace
Critical Thinking
  • Apply what has been learned to other situations
  • Seek appropriate resources to achieve learning targets
  • Knowing when to ask for help
  • Setting and revising goals
Coachable
  • Adapt to changes and experiences using an open mind
  • Willingness to accept feedback
  • Continually striving to improve self
  • Ability to follow verbal and written directions
Interpersonal Skills
  • An effective listener to both teachers and peers
  • Use appropriate language (correct vocabulary, no cursing, etc.)
  • Collaborate and cooperate with peers and instructor
  • Communicate my needs to be successful
  • Positive attitude, honest and kind
  • Use written communication effectively, such as email and other digital tools

Early College with Baker of Jackson

Students will be expected complete the same assessments/or equivalent assessments for the corresponding courses at Baker College in addition to meeting satisfactory requirements of the Programming course at the Wilson Talent Center.

These courses include the following:

  • Principles of Computer Science: CS1010
  • Introduction to Programming: CS1110
  • C++ Programming: CS2150
  • Java Programming: CS2410
  • Microprocessor Electronics: CS2310

High Level Outline of typical Material Covered:

Year 1:  C++, Java

Semester 1:

  • Computer Background/foundations
  • Procedural Programming
  • Test Driven Development                                 

Semester 2:

  • Object oriented programming
  • Project management

Year 2:  (Students Returning for Year 2 and not part of the Early College can choose to follow this or go more in depth in one specific topic.)

Semester 1:

  • Logic Design
  • Microprocessor Design
  • Computer Architecture

Semester 2:

  • Computer Architecture
  • Relational Databases

Student Learning Outcomes for above Topics:

Procedural Programming

  1. Demonstrate an understanding of programming terminology and methodology.
  2. Distinguish between the different data and variable types and differentiate when each type should be used.
  3. Demonstrate the ability to perform calculations as required to meet specifications for a program.
  4. Distinguish and compare the different flow control mechanisms including the following:
  5. Differentiate between simple and structured data types, especially arrays.
  6. Organize complex computer problems into modular components using subroutines and functions.
  7. Demonstrate the ability to write and debug programs using simple input and output routines as well as interactive debugging tools if they are part of the selected computer language.
  8. Demonstrate the ability to complete a programming assignment that includes development, documentation, design, and debugging of a program.
  9. Demonstrates ability to use Exception handling and Try Catch blocks
  10. Demonstrate ability to be able to apply all of the above with both Java and C++

Test Driven Development

  1. Describe the concept of unit testing, and the benefits especially in larger projects
  2. Demonstrate development test cases for assignments based on project specifications
  3. Demonstrate how to use test cases to verify if a program work correctly
  4. Demonstrate use of unit testing before system integration

Object Oriented Programming

  1. Explain the concepts of Encapsulation, Inheritance and Polymorphism.
  2. Demonstrate the ability to create programs using the above concepts.

Project Management

  1. Explain how a Gantt Chart is used to make a bottom up schedule for a project
  2. Explain how the Agile Project management methodology can be used in software development.
  3. Demonstrate ability to manage a larger scale project using one of the above methods.
  4. Demonstrate how a Trello board or similar can be used to make an Agile board.

Logic Design

  1. Demonstrate understanding of basic logic gates and combinational logic, and truth tables
  2. Explain different numbering systems and Demonstrate converting between bases.
  3. Explain 2s compliment numbering system
  4. Demonstrate through FPGA design how to implement sequential logic to create basic applications like a calculator.
  5. Ability to read timing diagrams and explain the importance of hold and setup times
  6. Demonstrate ability to make a clock divider and counter.

Microprocessor Design

  1. Describe how software and hardware interact 
  2. Discuss how each piece of system architecture interacts with each other 
  3. Demonstrate design of microprocessor embedded design using a SOC

Computer Architecture

  1. Explain the concept of CPI and Cycle time and how they relate to performance.
  2. Explain the concept of Pipelining
  3. Demonstrate ability to write simple assembly programs.
  4. Explain the different stages of a 5 stage pipeline and be able to identify data dependencies.

Relational Databases

  1. Explore The basic structures of tables in electronic databases.
  2. Examine relational database principles, concepts and design
  3. Construct queries using SQL in DBMS
  4. Explore the role of the Database administrator
  5. Create a database structure for a specific system/problem.

Internships and Work Based-Learning

Internships and work-based learning are evaluated by the employer each term.  The student will be evaluated on both skills and work habits on an evaluation form.  This evaluation becomes a pro-rated portion of the student’s grade for the term.

Examples:
6 week internship during a 9 week marking period
2/3 of the grade = internship evaluation
1/3 of the grade=class grade

Cooperative work-based learning (unpaid or paid):
2 school days at work and 3 days in class.
2/5 of the grade = co-op evaluation by employer
3/5 of the grade = class academics grade

Virtual Mentorship – Graded same as Cooperative work-based learning

  • This is similar to Cooperative work-based learning, but students remain in the classroom and meet virtually with Mentor in the industry to work on Industry programming problems while also working on class work.

Universal Learning

The Programming and Mobile Applications program is committed to universal learning and supporting all students’ needs. Our classroom space, routines, resources, and interactions will be as inclusive as possible. Treating each other with respect, listening to each other, having an open mind and a willingness to help each other learn is crucial to universal learning.

Strategies to provide optimal learning for all students in this course include:

  • Each student can redo assignments, tests and quizzes if they are not satisfied with their first attempt.
  • Every student can move around the classroom as needed.
  • Every student has access to a copy of the teachers notes on the class web page
  • Each student will be afforded a spot in the classroom where they can learn to the best of their ability.
  • Each student will have access to peer to peer support.

Programming & Mobile Applications Virtual Visit

PDF DocumentDownload Transcript

Student Testimonials

PDF DocumentDownload Transcript

The following music was used for this media project:
Music: 8-Bit Chip by Frank Schroeter
Free download: https://filmmusic.io/song/8877-8-bit-chip
License (CC BY 4.0): https://filmmusic.io/standard-license