|
|
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.
|
|