I was accepted for a software development internship at NASA with the Command and Control System at Kennedy Space Center. The goal of this challenge is to take the skills necessary for the internship and to improve on them by writing increasingly difficult small programs in the languages and frameworks that are used. Ideally, this will have me well prepared to make a positive impact for the internship and possibly my future at NASA.
- Java
- C++
- JUnit
- Bash
- Jenkins
- Robot framework
- Powermock
- Mockito
- Python
Day 1: "Hello World" program
- Languages: C++, Java, Python, Bash
- Frameworks: None
- Purpose: Standard output, comments/block comments, imports, namespaces, line termination, compilation, execution
Day 2: Imperial/Metric BMI Calculator
- Languages: C++, Java, Python, Bash
- Frameworks: None
- Purpose: Standard input, conditionals, variables, math operations, namespaces
Day 3: Fibonacci Sequence (without recursion)
- Languages: C++, Java, Python, Bash
- Frameworks: None
- Purpose: Loops, random numbers, unary operators, error checking
Day 4: Morse Code Translator
- Languages: C++, Java, Python
- Frameworks: None
- Purpose: Functions, Function declarations (C++), Function overloading (Java/C++), Menus, Exceptions (Java/C++), Switch statements (Java/C++)
Day 5: Circle class
- Languages: C++, Java, Python
- Frameworks: None
- Purpose: Classes / OOP, constructors, access specifiers, constants, preprocessor directives (C++)
Day 6: Array of different objects
- Languages: C++, Java, Python
- Frameworks: None
- Purpose: Inheritance, virtual functions, data structures
Day 7: Thread-Safe Arrays
- Languages: C++, Java
- Frameworks: None
- Purpose: Multithreading, locks, synchronization, operator overloading (C++), generic types, ternary operator (C++)
Day 8: Repeat After Me
- Languages: Java
- Frameworks: JUnit
- Purpose: Unit testing, assertEquals, results
Day 9: JUnit Asserts
- Languages: Java
- Frameworks: JUnit
- Purpose: assertArrayEquals, assertFalse, assertNotEquals, assertNotNull, assertNotSame, assertNull, assertSame, assertThrows, assertTrue
Day 10: Reflex Testing
- Languages: Java
- Frameworks: JUnit
- Purpose: Failures, @Before, @After, Readers, timing
Day 11: Pi Estimating
- Languages: Bash
- Frameworks: None
- Purpose: File handling, approximation algorithms
Day 12: Fermat's Primality Test
- Languages: Bash
- Frameworks: None
- Purpose: Additional Bash experience
Day 13: Game show door switching
- Languages: Bash
- Frameworks: None
- Purpose: Additional Bash experience
Day 14: Jenkins overview
- Languages: None
- Frameworks: Jenkins
- Purpose: Jenkins, continuous integration, continuous delivery, waterfall, agile, devops
Day 15: Testing circle class
- Languages: Java
- Frameworks: JUnit
- Purpose: Working with old code
Break to focus on end of semester work.
Day 35: Jenkins Setup
- Languages: Java, Bash
- Frameworks: Jenkins
- Purpose: Jenkins jobs, users, plugins, permissions, automation
Day 36: Jenkins Agents
- Languages: Bash
- Frameworks: Jenkins
- Purpose: Jenkins agents, backups
Day 37: Jenkins Pipelines
- Languages: Groovy
- Frameworks: Jenkins
- Purpose: Jenkins scripted pipelines, declarative pipeline, parallel pipelines