Andrew Johnson

M.S. Internet Engineering
University of San Francisco
Computer Science Department



Fall 2005

Programming SVGA Graphics Devices 0203-686-01 Computer Science Prof. Allan Cruse
This course explores fundamental principles of raster graphics programming from a hardware and systems software perspective.

Topics include:
- functional components of the standard SuperVGA graphics adapter
- relationship of video memory to screen resolution and color depth
- standard and non-standard display-modes for text and graphics
- basic computer algorithms for line-drawing and region-filling
- construction of wireframe models and principles of animation
- fundamentals of lighting, coloring, and perspective drawing
- user-interface issues in window systems and event-driven programs
- mathematics of ray-tracing used to create photorealistic images
- exercises in font, icon, and cursor designs and interactive controls
- exercises with sound-effects, mouse-control and graphic laserprinting


  Projects
  Tune Tool (C, C++)
  This project involves handling of mouse-events in a graphics application, and with synchronization of some sound-effects as responses when a user presses or releases a mouse-button while the cursor is over various regions-of-interest on the display-screen.
Author: Andrew Johnson
Source code can found here.
 
  3D Graphics with Ray Tracing on Linux (C/ C++)
  This project offered the opportunity to apply the knowledge gained in this course on programming SVGA devices, to create a ray-traced image of a mathematically defined object in 3-dimensional space.
Author: Andrew Johnson
Source code can found here.
 



Spring 2005

Distributed Software Development 0203-682-01 Computer Science Christopher H. Brooks
Use of artificial intelligence techniques to solve large scale problems. Search strategies, knowledge representation, and other topics chosen from: simulated annealing, constraint satisfaction, logical and probabilistic reasoning, machine learning, expert systems, natural language processing, neural networks, genetic algorithms, and fuzzy logic. Both theoretical foundations and practical applications will be covered. Coursework includes written assignments and programming projects.


  Projects
  XML Music Database (Cocoa, Objective-C, C++)
  XML music database that uses Web Services to gather additional information. Interacts with Amazon's Web Services platform using the REST interface.
Author: Andrew Johnson
Source code can found here.
 
  theBaconiZer: foaf.rdf tool (Cocoa, Objective-C)
  A program that tries to solve the 'Kevin Bacon' problem for a given person. That is, given a person's name and a FOAF profile, it finds the shortest path through the graph of friends that leads to this person.
Author: Andrew Johnson
Source code can found here.

Internet Systems Research 0203-680-01 Computer Science David W. Wolber
Survey of Internet systems research including the anatomy of the web, search engine architecture and algorithms, information retrieval, crawling, text analysis, personalization and context, collaborative environments, and the semantic web.


  Projects
  Akita: Web Profile Hunter (Objective-C)
  Akita is a search-driven personal profile builder that creates a personality "image" of a user based on online presence and peer associations. The data sources to build the image are derived from utilizing search APIs and by indexing a crawl of seed-driven FOAF files to obtain peer relationships.
Author: Andrew Johnson
Source code can found here.
 
  Universal Search Protocol Project (Java)
  A proposed structure for a Universal Search API, to standardize the syntax of public search queries. This structure contains a core set of functionality to represent generalized search requests and responses.
Authors: Andrew Johnson, Marc Greenberg
Source code can found here.


Fall 2004

Artificial Intelligence Prog 0203-662-01 Computer Science Christopher H. Brooks
Use of artificial intelligence techniques to solve large scale problems. Search strategies, knowledge representation, and other topics chosen from: simulated annealing, constraint satisfaction, logical and probabilistic reasoning, machine learning, expert systems, natural language processing, neural networks, genetic algorithms, and fuzzy logic. Both theoretical foundations and practical applications will be covered. Coursework includes written assignments and programming projects.


  Projects
  TFIDF WebCrawler (Python)
  A focused web crawler application that uses both keyword queries and TFIDF to determine what the user is interested in.
Author: Andrew Johnson
Source code can found here.
 
  Electronic Music Ontology (RDF)
  An Electronic Music ontology that was created using Protege, exported as RDF, and then queried with RDQL.
Author: Andrew Johnson
rdf  rdfs

Obj-Oriented Software Development 0203-601-01 Computer Science Terence J. Parr
A study of software development. Software engineering principles and structured methods are discussed as a prelude to the focus on object-oriented approaches. All phases of the software lifecycle are covered, including analysis, design, implementation and testing, and maintenance. Other topics include user interface design and development, software reuse and the design of reusable software components, software patterns, and web-based client-server programming.


  Projects
  Bubble Mail Web Client (Java)
  A Java servlet-based application that acts as a web-based email client server like Hotmail, etc.
Authors: Andrew Johnson, Cindy Zhou
Source code can found here.
 
  Bubble Server (Java)
  A simple HTTP server that accepts multiple simultaneous requests, responds to GET requests for multiple file formats, and can execute Java code on the server side.
Author: Andrew Johnson
Source code can found here.

 


back