Sunday, May 27, 2018

Your Code Are Dumb

I was reading a great article from Hacker Noon (link at the bottom of the page) and there was a paragraph about a variety of acronyms and phrases related to software engineering. For the sake of remembering them, I'm going to use Google to track down their respective meanings and copy and paste them below.

According to Wikipedia, YAGNI, or, you aren't gonna need it is a principle of extreme programming (XP) that states a programmer should not add functionality until deemed necessary.  XP co-founder Ron Jeffries has written: "Always implement things when you actually need them, never when you just foresee that you need them." Other forms of the phrase include "You aren't going to need it" and "You ain't gonna need it".

Again, from Wikipedia, the single responsibility principle is a computer programming principle that states that every module or class should have responsibility over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class.

DRY simply stands for Don't Repeat Yourself. Whereas WET is short for We Enjoy Typing.  Both of which suggest that well thought out code should be succinct and avoid unnecessary repetition.

The Single Level of Abstraction (SLA) or the Single Level of Abstraction Principle (SLAP) states that "each method should be written in terms of a single level of abstraction."


Thursday, May 24, 2018

Immutable Tuples

Python + SoloLearn = Awesome! I'm currently learning about lists, dictionaries, and tuples. I can't wait until June when I'll be able to focus full time on computer science.


Saturday, May 19, 2018

White Hat Kali Linux

I just completed a brief introductory course via StackSkills covering various aspects of ethical white hat hacking. The course covered such things as;

basic terminologies, operating systems and tools, reconnaissance, NMap, Shodan for scanning, Metasploitable, Armitage, Aircrack-ng, Man-in-the-middle-attacks (MitM), and more.

Friday, May 18, 2018

SQl + SoloLearn = Amazing

I've spent the last several hours studying Structured Query Language (SQL) and I am really enjoying the straightforward syntax and ease of use that it offers. Having studied PHP previously is also helping.


Course = JAVA // Complete!

I've just recently finished an introductory course in JAVA. I'm currently studying PHP and plan to finish that course this weekend.


Saturday, May 12, 2018

Monadic and Dyadic Operators

Monadic and Dyadic Operators
Operators can be monadic or dyadic A monadic operator operates on a single simple statement. Other operators will all be dyadic operators because they operate on two simple statements. Any time you use an operator with a simple statement, even a monadic operator, you create a compound statement.

Compound Statements and Truth Function
All the compound statements we'll look at are called "truth-functional" compound statements. This means that the truth value of the entire statement is determined by the truth value of the individual simple statements that make it up and the function of the operator on those statements.

If you write computer programs, you can think of the simple statements as inputs and the operator as the function that accepts those inputs and does something with them. The output of the entire function is determined by the value of the inputs and the specific operation of the function. Consider this simple program written in pseudocode which will take a string value and change the value to all caps and then print it to the screen:
Function PrintCaps (string A)
{
    A = AllCaps(A);
    Print A
}

Sunday, May 6, 2018

React and Team Tree House

I just invested several hours of time and ample mistake correction and produced an interactive scoreboard program using React.  Team Tree House is a stunning online education platform that offers a rich and diverse array of course offerings that span a wide range of topics related to computer programming. I seriously wish there was more time for learning!


The *.jsx code =

var PLAYERS = [
  {
    name: "Player 1",
    score: 0,
    id: 1,
  },
 
  {
    name: "Player 2",
    score: 0,
    id: 2,
  },
 

Saturday, May 5, 2018

Python and Matplotlib

Spending Cinco de Mayo learning about the seemingly endless amazing features of Matplotlib in Python!!! I'm currently studying Data Science via DataCamp, which is a comprehensive online education platform that focuses entirely on data science and programming via Python and R. The screenshot below is of a simple histogram that I created by following a series of Python tutorials.


Friday, May 4, 2018

Computer Science Teaching Certification Exam...

As I'm getting ready to take my 8-12th grade Computer Science teaching certification exam, I have to remind myself that although I once learned HTML, I am still really new to the world of programming. Just the same, I'm studying for several hours a day, every day. In fact, I haven't missed a day of learning in two and a half months.


Special thanks to Soumil Kumar for the amazing stock photo!

Wednesday, May 2, 2018

Python...my introduction

I've spent the last few days focusing entirely on Python and Pycharm. The following is code that I typed up by following along with a tutorial. There's a bit of code toward the end that I copied and pasted. I did this because the video was formatted/recorded in such a way that I couldn't see all of the code and continued to encounter errors. Just the same, I'm really enjoying the learning process thus far!



import random
import sys
import os

print("Hello world")

name = "Austin"
print(name)

print("5 + 2 =", 5 + 2)
print("5 - 2 =", 5 - 2)
print("5 * 2 =", 5 * 2)
print("5 / 2 =", 5 / 2)
print("5 % 2 =", 5 % 2)
print("5 ** 2 =", 5 ** 2)
print("5 // 2 =", 5 // 2)

print("1 + 2 - 3 * 2 =", 1 + 2 - 3 * 2)
print("(1 + 2 - 3) * 2 =", (1 + 2 - 3) * 2)
print('\n * 3')

quote = "\"Always remember, you are awesome!!!"
multi_line_quote = '''Beans is super awesome!!'''
print("%s %s %s" % ('I like the quote', quote, multi_line_quote))

Sunday, April 29, 2018

Metasyntactic Boolean Riddles

I just completed my first in-depth and comprehensive computer programming course on Udemy! The course consisted of 149 unique lectures. I'm going to take a short break (coffee) and dive into another course. Here's to moving ever forward!


Saturday, April 28, 2018

Local Guides Summit 17

Last year, I was among the 151 blessed souls fortunate enough to attend the Local Guides Summit in Mountain View, California. For two and a half days, we met and worked with a wide variety of Googlers. When we were not engaged in all things related to Google Maps, we were set free to explore San Francisco. To say that it was a life-changing event would be a travesty. 






Friday, April 27, 2018

Pointers

Spending the evening focusing entirely on C. Just finished a fun tutorial on pointers.

// Using pointers in C/C++

#include <stdio.h>

void main()
{
    int a = 14;
    int* p = &a;    //Declares int pointer (p) pointing to (a)

    // Where does (a) live in memory?
    printf("Address for a is %p\n", &a);
    printf("Address inside p is %p\n", p);
    if (p == &a)
        printf("P is point to a!\n");
    else
        printf("P is NOT pointing to a!\n");
}


Tuesday, April 24, 2018

Polymorphism is starting to make sense...

I'm about 65% of the way through a Java course via StackSkills and polymorphism is starting to make sense.

One of the slides from the course taught me the following;

A superclass type can always be cast to the type of one of its subclasses. This is called “downcasting”.

The ultimate root class in Java is Object. An object of type Object can be downcast to any type (class) that descends from Object.


The ability of a class to be cast to the type of one of its subclasses or descendants is terms polymorphism.

Saturday, April 21, 2018

My first game in Java!

I found an amazing tutorial for writing a brick breaking style game in Java. I walked through the video, typing all of the code, and was able to fully reproduce the game! In some respect, I suppose it's similar to tracing a drawing, but either way, I am so happy with the results. My first hello world app took me about 90 minutes to finish. I finished the game in about two hours.

Code written by Austin Craver


// Main.java

/*
 * This amazing Java game was written by Austin Craver
 * by following and coding along with a 57 minute tutorial.
 * Special thanks to Awais Mirza for taking the time to create
 * and share such a helpful and informative video!!! *
 */

package breakerGame;

import javax.swing.JFrame;

public class Main {

    public static void main(String[] args) {
        // Creates frame for game
        JFrame obj = new JFrame();
        Gameplay gamePlay = new Gameplay();
        obj.setBounds(10, 10, 700, 600);
        obj.setTitle("Breakout Ball");
        obj.setResizable(false);
        obj.setVisible(true);
        obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        obj.add(gamePlay);
    }
}

Friday, April 20, 2018

Scanner Friday

Another zany Friday night learning more about the fine art of computer science. Tonight I am focusing heavily on Java. For fun, and to "take a break" I'm taking a course in video production through Udemy. Despite being a very introductory course,  I was able to learn a few things and that was nice. More coffee, please.


Wednesday, April 18, 2018

IntelliJ and Variables

I'm really starting to enjoy using IntelliJ. The design is elegant and intuitive, and the functionality is top notch. Coupled with a complimentary course from Microsoft, I am learning the Integrated Development Environment as well as Java. Such a lovely combination.


Tuesday, April 17, 2018

Hello Java

I am currently enrolled in a variety of computer science courses, one of which is focused entirely on Java. I'm writing this post to serve as a digital mile marker.  As with so many other courses, one of the first tasks was to write, build, and run a Hello World app. The build went fine, however, I could not run the program. I am new to IntelliJ and had to configure the Java Runtime Environment (JRE). It took me longer than I would like to admit. Just the same, here I am, publically admitting it. Why? Because I am a passionate life-long learner, and mistakes are great teachers. That, and I'm really happy that I was able to figure it out. And now, I know how. It's now and forever one more thing that I've learned on my path to becoming a computer scientist. The feeling that I get from those moments of success is a large part of the reason that I am on this current path. I love overcoming such challenges. I cannot wait to be able to envision something and take it from my mind, through the computer, and into cyberspace.





Convos with SlackBots

I just discovered Slack and SlackBots. My introduction was brief and I will have to return to the API later on. Here's to the continual pursuit of knowledge!


Sunday, April 15, 2018

Merge Sort - Pseudocode

Merge Sort
Merge sort is a recursive algorithm that continually splits a list in half until each half is either empty or one item, at which point the two halves are merged together in natural order, back up the division process until the entire list has been sorted.


Merge Sort Pseudocode

void mergeSort( pass-by-reference int [] list) //method for initial call
  int n ← list.length  int[] temp ← new int[n] //creates a temporary 
utility array
  mergeSortHelper(list, 0, n - 1, temp)
end mergeSort
void mergeSortHelper ( pass-by-reference int[] list, int front, 
                       int back, pass-by-reference int[] temp )
  if (front < back) //if front and back are not equal and have not

Saturday, April 14, 2018

Holistic Serendipity

Being on the right path and doing the next right thing has brought me to an amazing place in life. My experiences are stacking up at such a rapid pace that I need to remind myself to stop and document more of them. For example, I volunteered to assist with the Visual Performing Arts (VPA) interviews at the school where I teach. That was last night. Today, I am attending training for redesigning and rewriting the curriculum for my school district. At one point we broke into small groups. Two of the three people in my group were at my school last night, also helping with the VPA audition process. At lunch just now, I stop to get gas and some pizza. The clerk at the gas station also works as a bus driver, and my campus is where he picks up. While enjoying my pizza, I decided to drive around and listen to the radio. There's a local group I've been wanting to check out and had only heard of where they meet. As I'm driving, a building caught my eye, and the sign revealed that it was the exact building where the meetings take place.


Friday, April 13, 2018

JavaScript and jQuery

Progress! My ever-growing to-do list now has one more thing checked off, a brief introductory course in JavaScript and jQuery. It was designed well and tasked the user with coding along. I can't wait to see how much progress I am able to make this summer. Ever forward!


Syntax Diagrams

I dedicated some time this afternoon to studying syntax diagrams. I love the aesthetics of them, and find them so fascinating. 




Thursday, April 12, 2018

Object Oriented Programming

I was really surprised to have finished week 4 of the Foundations of Computer Science for Teachers through UT. Week five promises to further elucidate Object Oriented Programming (OOP).  After week six, there are mini lessons on digital forensics, games, and mobile programming. Here's to moving in one direction, ever forward!


SQL

I've hit a wall in my SQL studies via the Khan Academy, and as such, I am engaging in additional studies prior to attempting to move for...