I am a very helpful person and enjoy explaining my craft to people. I have always found computers and logic to be fascinating and love coming up with analogies to help relate the topics to people. I am a very practice coder. I can help any entry level programmer; as well as, challenge advance coders to push them to the next level. I've built an ALU from scratch and created my own IDE. I've solved intractable problems on a professional level. I've worked with computer vision on a collegiate level and some personal projects in my spare time. There is not a day that goes by that I'm not reusing my fundamentals in my day-to-day work; be it programming, analyzing, or software architecture.
I have been programming since I was 6 years old (1987). I first started programming in BASIC on a TI-99 computer. I formally began my education in 1998 in high school studying C++ and assisted my classmates in their studies. I was instrumental in the formation of a 3D design class using 3D Studio Max software in 1999. I am a Texas Tech graduate with a Bachelor of Science in Computer Science. My most notable course work included data structures, artificial intelligence, and computer graphics (OpenGL).
I have worked with teams and managed them as well. I have been instrumental in communicating development cycle to upper management in clear and concise ways. I can break down a topic from complex higher understanding to layman's terms. Throughout my career, I have ensured that myself and co-workers are practicing solid programming fundamentals. This ensures quality work and readable, reusable code.
If you have me as a tutor, I will make sure you leave with a solid understanding, and share tools and methods that will help integrate your skills into the work force.
Education & Certification
Undergraduate Degree: Texas Tech University - Bachelors, Computer Science
I spend most of my time at my computer desk developing on personal projects or enjoying a video game. When I'm not at home, you can find me doing water sports or camping. I also play men's roller derby here in Houston. I've been working on a personal project since 2014 developing a web-base IDE for rapid prototyping and group collaborations.
AP Computer Science
AP Computer Science A
College Computer Science
Computational Problem Solving
Computer Game Design
High School Computer Science
Technology and Computer Science
Q & A
What is your teaching philosophy?
I like to focus on strong fundamentals. Coding is built by layers and requires a strong foundation to expand from. Having clean and precise code allows for increased readability and quicker debugging. This also leads to more reliable and reusable code.
What might you do in a typical first session with a student?
I like to start by knowing what are the current interests. Lesson plans are more approachable when a common interest is identified. In order to code a system, you need to be able to live and breathe it; thus, pairing the workload with a passion always yields greater results. Once you find that hook, one you can sink your teeth into, you'll be compelled to code it for hours on end.
How can you help a student become an independent learner?
Being a programmer is being a master of the abstract. This means that although you can be given the tools you need the application of them is unique to the situation. Research and analysis is a big portion of the job. It is important to know how to track down missing components related to your project. Wikipedia, Google, and coding forums are a great place to start but they rarely yield a direct answer. It is up to the programmer to use their knowledge to ultimately devise a solution. It is from this mindset that a programmer will always be an independent learner. It is inherent to the work. I will do everything I can to cultivate this skill set with my students.
How would you help a student stay motivated?
It is important to not be discouraged in this field. Many projects are daunting when you start them, and it’s hard to see the light at the end of the tunnel. Burnout is a common problem in our field that can only solved by stepping back from a project from time to time. It is important to have other outlets in your life to help reset your mind. Sometimes reaching out and talking with someone about your project helps relight the flame. Try communicating what's making you struggle to a peer or a friend. Doing this allows you to see the project as a whole again and can get you moving again. If you're still struggling, focusing on smaller aspects of a larger project can really help. Seeing the parts finish gives you more momentum and makes the load seem lighter.
If a student has difficulty learning a skill or concept, what would you do?
The best approach is to break down the skill/concept to its smaller components. If one is struggling with an idea, then there is a component within the fundamentals they are still struggling with. I would work with my student to figure out weaknesses in their core understanding, build that foundation back up, and then re-approach the problem area. This happens quite often in our field as we push our understanding to create new applications. We have to research and assemble the parts we're working with to build our understanding of the greater whole.
How do you help students who are struggling with reading comprehension?
As I exclusively work with programmers, my answer will be towards reading syntax. There are multiple languages available to programmers. Each language is built with certain advantages yet also come with their own drawbacks. It is important to select the language that best complements the task at hand. Each one of these languages have their own syntax; in other words, the student has to comprehend how the language is communicating to the machine layer. As a seasoned programmer I have worked with a myriad of languages and methodologies. I sometimes like to tell people I've learned the "Latin" of coding and can translate into any other language. Breaking down the 'grammar' of the language and why it was written that way goes a long way towards the comprehension of that language.
What strategies have you found to be most successful when you start to work with a student?
The best approach is to find common ground to begin from. I like to determine why the student is looking for help in the first place. Some need help learning a concept, while others are looking to push themselves to a higher understanding. Regardless of the end goal, I like to set smaller checkpoints along the way. This gives the student a greater feel of progress and makes the unreachable more tangible.
How would you help a student get excited/engaged with a subject that they are struggling in?
One fun aspect of coding is that it is a creative field. You can literally do whatever you want with code; however, some aspects take immense amount of work to complete. I would work with the student to create projects within their realm of interest. Once you can relate to the subject matter, you find that being creative towards it is second nature. At the same time, it is possible to be overly inspired and see to many facets you want to cover. I would help this student focus on what's important to the project, finish that first, and then with the time left over add the flourishes.
What techniques would you use to be sure that a student understands the material?
I would assign projects that covered what we currently working on. I would provide information that covers the components of the project but ultimately rely on the student to piece them together. If the student was unable to compete the project, then we'll discuss what they were struggling with and adjust the project to suit; even if it requires starting a new project. All material can be broken down to its basic fundamental understanding. I'm willing to put in the leg work to break it down for my students.
How do you build a student's confidence in a subject?
The best way to build confidence is setting goals and reaching them. Failure is still a part of learning, but failure also lets us know what are weaknesses are. Focusing on these weaknesses will yield success and directly translate back into confidence. The only way to achieve balance is to first loose it.
How do you evaluate a student's needs?
One on one discussion. The only way to do this is by listening to the student, finding out why they're interested in a topic, and figure out what end result they want from tutoring. As the student begins to turn in assignments/projects I will discuss with them the process they went through. This will help identify what struggles they faced. The next assignment/project will be tailored to those needs to help reinforce basic understanding of the material.
How do you adapt your tutoring to the student's needs?
Every student is unique and thus their lesson plan needs to be tailored towards them. Teachers give generic information to the whole class, while a tutor focuses on one person and their understanding of the subject. To do this, I create lesson plans specifically for my student. I may re-use assignments I've given others, but they will be restructured to fit the needs of the student receiving it.
What types of materials do you typically use during a tutoring session?
I try to use everything at my disposal to help someone learn. The type of materials chosen is dependent on the project at hand. Abstract ideas are best done with pictures, graphs, and discussion. Basic fundamentals are best done with hands on coding experience. The beauty of coding is that it ultimately can be represented as a physical machine and its moving parts visually depicted. Programming is art in motion. There are many ways of capturing and portraying that motion.