+ +
Computers

Computer Science is my passion. It is both my job and my hobby. Here you will find a list of computer languages and other techniques that I know, and a discussion of how I can use them to make your computer or website deliver exactly what you want. Several of these were used to build this very webpage!

I am currently pursuing a degree in Computer Science from Loyola University, New Orleans. Barring any unforeseen disasters, I will receive it in May, 2008. I've included a basic review of my curriculum at the bottom of the page. After getting my B.S. I intend to Pile it higher and Deeper. I've already had a lot of experience making websites and software. See some of my handiwork on the Websites page.

Computer Languages

Programming Languages

  • Java - Strict, but versatile. Java programs can run on any operating system, and even from websites. This language is very widely used and well documented.
  • Ruby - A programmer's programming language, and my all time favorite. Ruby is somewhat similar to Java in the way it runs (it is also operating-system independent). The big difference is that Ruby is very free-form. This means it's fast and easy to program, but hard to debug. The documentation leaves something to be desired.
  • C - This is the only non-object-oriented language that is still widely used. C is somewhat difficult to use and C programs are NOT operating system independent, but with this language you can go about as far into the inner workings of the computer as it is possible to go. C is very "low level."
  • C++ - An object-oriented version of C. In my opinion C++ is sloppily designed, but it is still widely used when you need the power of C but the convenience of object-orientation.
  • Visual Basic - A language for making user-friendly window applications in Windows. I'm not a big fan of how it is designed, but this is an important language to know in the business world.
  • Z80 Assembly - Assembly is one very small step up from programming in binary. This is literally as low as you can possibly go into your computer without re-wiring it. Most people find assembly tedious and frustrating, but I love it. It is, however, not very practical for use on modern computers because of how long it takes to do everything. Assembly is mostly used on handheld devices like cell phones and calculators.
  • BASIC - Various different forms of BASIC exist, though they are rarely used anymore. BASIC was the first programming language I learned in middle school.

Internet Languages

  • XHTML (Extensible Hypertext Markup Language) - The modern version of HTML. This is the language that nearly all webpages (including this one) are written in. A "markup" language is not a programming language, but a language that tells some program (like your web browser) how to display a document.
  • CSS (Cascading Style Sheets) - A language to apply formatting rules to XHTML.
  • PHP (PHP Hypertext Processor) - A server-side language used to generate webpages. "Server-side" languages offer a lot of benefits to websites, such as letting you reuse common bits of code (like the header of your page) and letting you interface with databases without revealing sensitive information or passwords.
  • ASP.NET (Active Server Pages) - A Microsoft server-side language designed to run on their web servers and interact with other Microsoft languages to generate webpages and other online content such as Web Services. ASP provides a lot of time-saving tools for generating and validating web forms, and also provides a host of other useful features.
  • XML (Extensible Markup Language) - The parent of a lot of important web standards. XML is a family of markup languages that is used to store data in such a way that it can be easily converted from one type to another. XHTML is one type of XML.
  • XSLT (Extensible Stylesheet Language) - This is a rule-based language that is used to convert XML data from one form to another quickly and efficiently.
  • JavaScript - A programming language designed to run on webpages and manipulate XHTML. JavaScript is usually used to add neat effects to webpages, such as buttons that change color when under your mouse pointer. JavaScript helps make pages interactive and interesting.
  • AJAX (Asynchronous JavaScript and XML) - Strictly speaking, this is not a language at all, but rather a programming method popularized by Google that uses several other technologies to do things "in the background" of a webpage. This is a fast and convenient way to verify the data that users submit on webpages, and has a host of other uses that makes pages more dynamic.
  • Web Services - Web Services are rapidly becoming the preferred method for applications to interact with websites (specifically ones with large databases). Web Services are a standardized form of communication that allows a program to query a website and get a response in such a way that it doesn't matter what operating system or programming language either one is using. This method is much cleaner and more reliable than previous methods for doing these tasks. Also involved with Web Services are the SOAP (Simple Object Access Protocol) and WSDL (Web Service Description Language) standards.

Protocols

  • SQL (Structured Query Language) - This is the language used by programs to interact with databases. Even though there are many types of databases, they all understand SQL, so knowing this is very useful for writing programs or webpages that use a lot of data, and it will work with whatever database software you might happen to be using.
  • HTTP (Hypertext Transfer Protocol) - This is the language used by your web browser to get webpages from the internet. There are several neat tricks you can work into HTTP that a lot of web programmers don't utilize... probably because they don't want to get their hands dirty with the low-level stuff.
  • FTP (File Transfer Protocol) - Used to download files from the internet or upload files to the internet. FTP is useful if your website has a lot of non-webpage files that users need to access, or if your website needs to get files from a user's computer.
  • SMTP (Simple Mail Transfer Protocol) - The language used between computers on the internet to send e-mail back and forth.
  • TCP (Transmission Control Protocol) - The language of the internet. Most of the traffic on the internet travels from one computer to the next using the TCP protocol. TCP is reliable (meaning it checks to make sure your data didn't get corrupted during transmission) and connection-oriented (meaning it makes sure you data arrived).
  • UDP (User Datagram Protocol) - What isn't done with TCP on the internet is probably done with UDP. This is also a "transport-layer" language. It is faster and more versatile than TCP, but it does not ensure that your data arrives in tact or in the same order it was sent... in fact, it doesn't even ensure it arrived at all. UDP is used when you can afford to lose some 1's and 0's along the way, such as streaming video and sound.
  • IP (Internet Protocol) - An "IP Number" is a unique number that identifies your computer when you are on the internet. IP is the language used by computers on the internet to find and send messages to other computers.

My Degree in Computer Science

Here is a brief review of the degree program I have completed at Loyola University, New Orleans. Also listed are the Math and Philosophy courses that I found relevant and helpful to my study of Computer Science.

Computer Science

  • Introduction to Computer Science - Use of the internet and it's technologies, specifically XHTML, CSS, and Javascript. Introduction to sequential programming using Javascript.
  • Visual Basic Programming - An introduction to programming and creating user interfaces using VB.NET.
  • Introduction to Software Engineering - Implementing the Object-Oriented Paradigm with Java, and review of the software lifecycle.
  • Architecture - Binary logic, circuit design, assembly languages, and high-level to low-level language compiling.
  • Data Structures - Methods of representing and accessing data using C and C++, specifically stacks, queues, linked lists, trees and graphs.
  • Operating Systems - Principals of popular operating systems such as Windows, Unix, Linux, and Solaris, operating system types (based on use), and common operating system problems, such as security, scheduling, paging, memory allocation, shared memory, and usage of secondary storage.
  • Internet Technologies - Comprehensive review of web programming and publishing, including XHTML, CSS, JavaScript, GCI, Perl, PHP, ASP, and AJAX. Design and implementation of Web Services and multicasting protocols.
  • Databases - Database creation and design, form and report production, normalization, and SQL.
  • Emerging Languages - Compiler theory and data structure access, specifically XML and its related technologies such as XSLT, X-Path, X-Query, etc.
  • Networking - Organization and structure of different network topologies, network security, the 5-Layer Paradigm, and common networking protocols such as SMTP, HTTP, TCP, UDP, IP, and Link-Layer protocols.
  • Graphics - Figure drawing, user interface creation, animation, and multi-threaded applications.
  • 3D and Advanced Graphics - Implementation of the 3D Wireframe Pipeline, including 2D and 3D clipping, window to viewport transformations, perspective transformations, and shape transformations using matrices in 2D and 3D.

Mathematics

  • Calculus I and II - Derivatives, integrals, trigonometry, separable differential equations, sequences, and series. Many of these concepts are useful in computer science, especially when it comes to solving equations and efficiency studies.
  • Linear Algebra - Manipulation of matrices and multi-dimensional transformations are useful in the study of 2D and 3D graphics. Vector operations are also useful in 3D graphics.
  • Finite Mathematics - Set theory and graph theory are useful for the design and access of data structures, and binary logic is useful in architecture.
  • Algorithms - Various methods for solving equations using finite algorithms (which are best implemented on computers), such as the Bisection Algorithm, Newton's Algorithm, and Taylor Polynomials.

Philosophy

  • Minds and Machines - Similarities and differences between serial processors (most modern computers) and massively parallel networks such as the human brain, how both designs can be compared, and the benefits of each. Applications to Artificial Intelligence.
  • Epistemology - Philosophy of learning and identity. Applications to Artificial Intelligence and user interface design for programs that need to "learn" or solve other real-life problems.
  • Philosophy of Mind - The definition of an intelligent entity, and the nature of the human mind and human perception. How human intelligence can be imitated or replicated in other contexts such as animals or machines.
+ +
>