/68-Day-Challenge

I was accepted for an internship with NASA at the Kennedy Space Center and to improve my programming skills, I will be writing a new program each day to improve my skills in the languages necessary.

Primary LanguageJava

68 Day Challenge

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.

Skills to improve

  • 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