What is an engineer

In August of 2016, I began my college adventures at Virginia Tech. I had applied into computer science, and would be in the College of Engineering. I was fortunate enough to be able to live in the Galileo living-learning community, which is the male counterpart of a duo of engineering dorms. While living in Galileo, we did a project about what we think an engineer is - including typical skills of an engineer, our relevant personal experiences, and how each relate. This is the video that I made.

My time at Shodor

The Shodor Education Foundation in Durham, NC, is a computational science education organization (founded in 1994) that focuses on teaching students and providing resources and instruction for instructors. They provide classes, workshops, and various levels of internships, and attempt to incite and continue interest in STEM topics through interactive sessions and real world problems. Nationally recognized and unique, Shodor delivers their skills and knowledge, through structured and moderately paced lessons, to mostly middle and high school students throughout the year.

I became involved with Shodor in the summer of 2012, when I took an Introduction to Programming class and an Introduction to iPhone Programming class. The classes presented a clear introduction to their respective topics, but at the time, because of my previous exposure to such topics, I was unable to grasp their content fully. Throughout each week of these classes, I slowly understood more, with the Introduction to programming class introducing me to the skills of programming and ultimately, web programming and design, and then the Introduction to iPhone Programming giving me an introduction to higher end programming, writing in a compiled language, and the capabilities of such languages.

Over the next year, I began writing simple iPhone apps and exploring much farther into web languages. Over the next few years, I successfully taught myself HTML, CSS, and experimented with many diverse website designs. After a short time I returned to what Shodor had taught me, reviewed the basics of JavaScript, and then I began learning and writing much more advanced javascript.

The following summer (2013), I returned to Shodor and took a class on Parallel Programming, and I retook the two classes that I had previously taken (and I understood everything that was presented).

During the summer of 2014, I returned to Shodor to participate in their Shodor Scholars Program, which is an intense 2-week course that covers many subjects and is designed to be an example of and preparation for their Apprenticeship program. Following the Shodor Scholars Program, I applied and was accepted into the Apprenticeship Program.

Shodor’s Apprenticeship Program is a year long program where participants learn various skills such as computer modeling (both system and agent based), programming, web languages, and engineering.

While in the Apprenticeship program, participants create a web site (hosted by shodor; originally designed from a template, and later designed by us) to document what they create, and keep a log of what we did each session. A copy of my site can be found here (originally hosted at shodor.com/~anyland).

A screenshot from a simulation that I created and helped write while working as an intern at Shodor. It simulates a biosystem with fish and seals acting in a prey and predator relationship. It can be viewed here.

Intro to Programming

I like and am interested in a lot of aspects of computer science, including hardware engineering, but I find programming especially intriguing. To me, it is more than just different parts of the computer doing their specific tasks, it is a way to control and organize those capabilities. I love the tasks of figuring out an algorithm to complete a task in the fastest and most accurate way possible. And, despite their complexities and differences, all methods of programming are extremely similar.

Intro

Programming is quite different than coding. The entire process of programming includes coding, but what makes it special is figuring out your entire algorithm before determining which parts of code you will need and writing them to run your program. This process can be quite difficult and takes many hours to perfect, and relies on a basic understanding of coding, which is your way of communicating your commands to the computer. Most programmatic syntax is quite similar, uses the same basic ideas, and is reasonably easy to understand fundamentally.

The Basics

Many basic commands in most languages are quite similar. Programming a computer ultimately deals with two types of commands and directives; data, and actions. These actions work with the data and create some sort of output. For now, the data is the important part, and computers usually store it in three main types; numbers, text, and objects. Numbers consist of all numeric values, and are usually split into two categories; integers and floating point values (fractional values, stored in a decimal representation). Text is stored of character strings, and both numbers and text strings tend to be objects, which are pieces of data with parameters and actions.

Defining basic data

Languages range from specificity of object type from not caring to needing to know exactly what type of data it will be. Usually, data types of a variable cannot be changed after definition. Most languages allow the user to define two main ways to store data; as variables, which can redefined and given different values later, and constants, which can only be defined once (constants are far faster for computation).

Javascript

var VARIABLENAME = VARIABLEVALUE;

Javascript doesn’t care what type of variable you are using, and they can usually be redefined to any value of any type. Variables will look similar to this: var myVar = 12; (integer) or var myVar = 4.365; (floating point number), var myVar = "some text"; (string), or var myVar = new Object(); (object).

PHP

$VARIABLENAME = VARIABLEVALUE;

PHP is similar to javascript in that it does not need the variable type to be defined. It is unique that variables and only variables start with “$”, which allows them to be called directly from within a text string, and it’s syntax will look very similar to javascript – the only difference is the “$” at the beginning of the variable name. [enter more languages]

Arrays

For all data types, there is a more complex storage method that allows to organize and control our data much easier. Arrays allow us to store a collection of data using a key to access our data, and so we do not need to designate names for all of our data or need to know how much data we will be using. Text strings are technically arrays of characters, and there are arrays of actions for different data types (such as summing a collection of numbers). There is a variation of an array called a dictionary, but we’ll learn about that later.

Javascript defines arrays pretty simply var myVar = new Array("items"); or var myVar = ["items"]; and doesn’t care about types or how many different data types are in the array, and PHP defines arrays quite simply as well $myVar = array("items"). All arrays can be combined, altered, and sorted. [enter more languages]

Objects

As I said before, objects contain two parts; parameters (or sub-objects) and methods (actions). All parameters can be other objects of any type. Most languages allow the user to define classes, which are templates for objects, and objects can be created as enumerations of that class.

Javascript and PHP define objects quite simply:

var VARIABLENAME = new Object();

Object() is usually a constructor function which returns an object and can accept arguments to be used in creating that object. Another example of the way these languages define objects is:

var cup = {
	var height = 2;
	var width = 3;
	var full = 0;
	function fillCup() {
		full= full+1;
	}
};

Methods

While it’s great to be able to store data in any way that we could want to, it’s almost useless if it is only stored and not used. Actions are defined as functions and exist to give the computer direct commands. Functions can return data, and can be given data to process. Here is a simple example of a function:

function max(a, b) {
	if (a >= b) {
		return a;
	} else {
		return b;
	}
}

Methods are used to perform actions on existing data, or process incoming or outgoing data. They can use logic and other algorithmic elements to process this data. This function above takes an input of 2 variables, checks which is larger, and returns this value. Methods are usually written as functions or func, and the inputs are called arguments while the outputs are called return statements.

Javascript

function (args) { //args can be declared or stored as arrays
	//code goes here
	return "value"; //return statement
}

To learn more about programming, continue.