Computer Science
Classes I've taken or am taking:
CS-005 Fundamentals of Computing
CS-010 Intro to Computer Science I
CS-015 Discrete Mathematics
CS-030 Intro to Computer Science II
CS-045 Computer Organization and Architecture
CS-050 Computer History/Ethics
CS-120 Advanced Data Structures and Algorithms
CS-125 Database Design
CS-130 Software Development
CS-140 Computer Networks
CS-150 Distributed Systems
CS-190 Practicum
CS-192 Project
CS-195 Senior Seminar
CS-010 is an introduction to solving problems by programming. It involves learning a dialect of Lisp, called Scheme, and learning how to logically solve problems. We use a runtime environment called Dr. Scheme. I have created many interesting small programs -- the largest at about 400 lines of code. One interesting program I created drew fractal "savanna trees":
CS-030 is an introduction to C++, a very popular and powerful computer language. This class covered a wide range of material, including recursion, data structures, and sorting algorithms. The largest project I created was a model of the Online Airline Guide, a tool used by airports to check airplane routes. Screenshots of it are below:
CS-050 is an introduction to the history of computing, as well as a survey of ethics. We cover everything from ENIAC to the Turing machine, as well as various ethical worldviews. We also cover Artificial Intelligence, what it is, and how it affects us.
CS-120 is an advanced C++ class. It involves concentration on advanced data structures, and analysis of algorithms. We cover topics ranging from heaps, to red black trees, to linked lists. Additionally, we also go over efficiency, including Big-O and Big-Theta. The three projects below represent the work I've done in this class. The first picture shows a program used to print out an inputted number, without using cout or printf. The second picture shows a program used to access a file, and print out all of it's info. Including any other files that it may link to. Finally, the third picture is a templated array of Objects that has insert and remove, among various other functions. It keeps it's Objects in order, as well.
CS-140 is a survey of computer networks. This class is VERY broad, and covers just about every aspect of networking. We cover TCP/IP stacks, Multiplexing, error checking, socket programming, DNS, interference, and many more topics. The major project for this class was creating a new protocol, and applications that interact over it. We had to create a system of money, with a server, an ATM machine, a washing machine, and a teller to transfer money. We then had to exploit security holes to hack into the setup and steal money. Then we had to patch the system.
CS-190 is the Practicum class. I chose to work with Westmont's senior Linux Systems Adminstrator for my senior year. Through this internship I learned a tremendous amount about Linux, networking, administration, troubleshooting problems, and how to write scripts to solve problems. More specifically, I learned my way around the Linux command line, the Zabbix monitoring utility, network topology, and bash scripting.
CS-125 is the Database Design class. We learned all about relational algrebra, the theory behind databases, and simple and complex SQL programming. PostgreSQL was our database of choice, and we had to do a sizeable project throughout the class, which eventually developed into a fully functional database with a PHP interface.
CS-192 was the Project class. I had to work on a project, of my choosing, for the entire semester. In order to receive the full number of units, I had to work 12 hours per week on this project. Conveniently, as I was trying to come up with a good idea to implement, some friends of mine, who happened to be Buisness majors, approached me with a buisness idea. They had a project they wanted me to build and they offered me part-ownership if their company actually took off as payment. It was a very interesting idea and it solved my problem of finding a project, so I agreed to do it! My project consisted of building a web application that enabled users to easily plan activities. I had a MySQL database of various activities across the nation, which i gathered by writing a web scraper in Ruby. Users were to put in their address and my software would return activities within a given radius. Then they could pick and choose activities to create an overall plan. The interface to do this was coded in a very pretty way using XHTML, CSS, and JQuery. It was pretty heavy in the AJAX department to make it easier for users to navigate. Additionally, all the server-side work was done in PHP. I would have definitely done this in Ruby-on-Rails had I known anything about it at the start, I think it would have been significantly easier, but regardless I learned many new programming tricks in the languages I used. it was a fantastic experience.
CS-195 was the Senior Seminar class. This is essentially a "capstone" class which covers everything we have learned the last four years and any last remaining things our professors might like us to know. This involved discussing how to integrate our Christian faith with our future vocation in Computer Science, the relationship between science and faith, and practicing interview skills. Additionally, a major portion of the class was working on a senior project. I continued my project from the previous semester, which involved continuing to build my web application. This time though, I received help from two other students. I worked as the project lead and coordinated our efforts to build my Software-as-a-Service product. This involved meeting weekly to discuss our project and plans, delegating specific tasks to do, scheduling work hours with my underlings, as well as accomplishing complicated web programming tasks by myself and in tandem with the others on my project. All in all, it was a wonderful way to end the semester as well as my time at Westmont.




