Robert Rolsma - Academic Information
You have reached the academic information page of Robert Rolsma.
I am a recent graduate of Harvard University, where I studied computer science.
This page contains a partial list of my coursework.
Computer Science courses I've completed:
-
Fall 2003
- Web Development Using
XML
-
This course focused on using XML technologies in website development. The first
part of the course covered fundamental XML technologies (XML, XPath, XSL, XSLT,
XSLFO, XML Schemas, DTDs, and DOM) and open-source web-based XML publishing
frameworks such as Cocoon. The second part of the course covered specific markup
languages (applications of XML) relevant to website development (XHTML, SVG,
RDF, RSS, DocBook, and WML), with an emphasis on developing dynamic,
data-driven sites that deliver content in a variety of media types (HTML, text,
PDF, graphics) to a variety of devices (desktop and handheld computers,
WAP-enabled cellular phones) and audiences. In addition, XML-based web services
were surveyed.
- Practical Perl
-
Perl is described as the "Swiss army knife" of programming languages.
This course emphasized practical applications of Perl: data manipulation and
analysis, report generation, web programming, and integration of databases for
use in these applications. Emphasis was on writing idiomatic, correct, and
maintainable Perl in a UNIX environment. Other topics included the Apache
web server and its mod_perl extension, XML, HTML::Mason, and performance
analysis.
-
Summer 2003
- Communication
Protocols and Internet Architectures
-
This course provided a structured technical approach to the design, analysis,
and implementation of Internet protocols and network architectures. I studied
various protocols, including TCP/IP, WWW/HTTP, LAN protocols, and client/server
protocols. The course also discussed new areas of work, including voice and
video over the Internet, network QoS, and enterprise network management.
- Database
Management Systems
-
This course introduced the concepts of database design and the techniques for
manipulating data structures via database management systems. Throughout the
course I worked on a case study to gain experience in mapping the information
needs of an organization to a database. This included a discussion of the
different database software currently used by organizations and issues
pertaining to their use such as concurrency, deadlock, recovery, distribution,
security, and integrity. I acquired familiarity with the different database
models with special emphasis on the relational model, as well as experience in
using both the intuitive and normalization approaches for database modeling and
design, and SQL and QBE for data manipulation. Also included was a discussion
of client-server architecture and trends and future directions in database
systems, including a discussion of the object-oriented model.
-
Spring 2003
- .NET System
Programming
-
This course was designed to enable me to effectively write software for the
middle tier using the .NET framework. Topics included: writing robust
multithreaded .NET components, leveraging COM+ services including transactions,
application recycling, partitions, queued components, object pooling and MSMQ
with .NET, effectively using ADO.NET for database access, .NET security
including creating an extensible security framework using .NET interception,
writing distributed applications using .NET remoting and web services.
- Distributed
and Enterprise Computing
-
This course offered an in-depth study of the practice of building enterprise
systems within the Java programming environment and Java 2 Enterprise Edition
(J2EE) framework. The course progressed through a series of units (basic tools
of the trade, distributed objects, data and directory services, distributed
components), covering along the way many of the key application programming
interfaces (APIs) and tools used to develop enterprise applications. The APIs
covered included servlets, JavaServer pages, remote method invocation,
Enterprise JavaBeans, XML, JDBC, and Java naming and directory interface.
Programming assignments also allowed me to gain hands-on experience with these
tools of the trade, and the final project provided a chance to engage in a more
involved system design using these tools.
-
Fall 2002
- Java
for Distributed Programming
-
This course comprised a rigorous study of the core Java programming language,
followed by an inquiry into its most promising area of application, building
distributed systems. The first part covered classes and inheritance, abstract
classes, interfaces, exceptions, threads, packages, events, reflection, and
Javadoc. The second part explored the use of Java to implement three-tier
architectured systems. By providing support for security, networking, and
threads as part of the language specification, and by offering complete
portability through its virtual machine, Java is the ideal language for
building applications whose objects are distributed on a network. Both major
distributed object protocols, common object request broker architecture (CORBA)
and Java's remote method invocation (RMI), were surveyed.
- Programming
in C# with Visual Studio .NET
-
The course introduced Microsoft's new C# language using the Visual Studio 7
(.NET) development environment on Windows. Its use in practical applications
for Windows GUI programming, services, and web offerings was covered. The C#
language specification that was presented includes: C# types, variables and
parameters, statements, memory management, classes, interfaces, object-oriented
programming concepts, events and delegates, namespaces, pre-processing
directives, exception handling, and pointer use ("unsafe" contexts).
I learned how to develop console applications, create Windows forms (GUI
programming), and write web-based applications with ASP.NET, and develop
database applications with ADO.NET.
-
Summer 2002
- Intensive
Introduction to Computer Science using C++ (Course switched to Java
in 2003)
-
Intended as a fast-paced first course in computer science for students who plan
to take more advanced courses in the field or to work extensively with
computers. Covered fundamental data structures (arrays, files, stacks, queues,
linked lists, trees, graphs), control structures (including recursion),
algorithms (sorting, searching, pattern matching), and their implementation in
both UNIX and PC-based environments using the programming language C++.
Features of the C++ language such as classes, templates, and operator
overloading were used where appropriate, but the emphasis was on fundamentals
of software design rather than advanced features of the language.