CPSC 441, Fall 2018
About the Final Project
As you know, this course will have a final project instead of a final exam,
and the project will include a presentation.
Projects can be individual or group, with two or three people in a group.
Ideally, all the projects will be different, but that might not be possible.
Ideally, there will be a significant number of group projects, to limit the
number of presentations. The project is due at the regularly scheduled
final exam period: Monday, December 17, at 8:30 AM. There will be
presentations during the exam period, but we will almost certainly
need to have some presentations earlier, during the last week of classes.
However, even if you give your presentation early, the project itself is
due at the exam period.
You will need to meet with me to get approval for your project, and I will ask
for a written project description before Thanksgiving break. However, I encourage
you to meet with me one or more additional times to discuss ideas, before we make
a final decision about what your project will be. It is never too early to start
thinking about ideas!
A project will take one of the following three forms (although I will consider
exceptions if you come up with an interesting proposal that doesn't fit into
any of the categories):
- Research Paper: Write a paper about some aspect of networking.
The paper for an individual project would probably be eight to twelve pages,
and should include notes and bibliography. It might be possible to have
a longer paper, or several related papers, as a group project.
- Project and Paper: Do some network setup or configuration, or some smaller scale
programming, and write a medium-length paper about that discusses what you learned and
what you accomplished.
- Programming Project: Write a non-trivial network application or a library that
implements a networking API. You might work either with a standard protocol or one
of your own devising. A programming project will ordinarily also include a short
paper describing what the software does and/or how it is used.
Here is a list of some possible topics. You are not restricted to choosing a topic
from this list. If you find some other appropriate topic that interests you, come in
and discuss it with me.
- Internet infrastructure — How do high-capacity routers actually work?
Who controls the Internet? What happens at IXPs (Internet eXchange Points)?
- Undersea cables — Most network traffic between continents travels
over undersea cables. What are they like, physically? How are they laid? What technology
lets a signal travel through thousands of miles of cable? How many are there?
Who owns/controls them?
- Protocol design and implementation — Design and implement your
own application-level protocol. Or find out whether a popular service that you use
has a documented public API, and write a client for it.
- Multimedia streaming — Investigate the protocols for multimedia
streaming, and the implications of the fact that so much network traffic
consists of video streams. How can a live event be streamed to thousands of
viewers at the same time?
- Tomcat — Tomcat is Java EE server. Install and configure a Tomcat
web server on your virtual machine, and investigate the basic Java API for web serving
(servlets and JSP). Research how it is use used in the real world.
- node.js — Node.js is used for server-side programming in JavaScript.
Install node.js on your virtual machine. Use it to run a web server. Program some
web services on it. Research how it is used in the real world.
- Internet of Things — Look into the move to attach everything to the Internet.
- Web services — Investigate how HTTP is used for computer-to-computer, rather
than person-to-computer, communication. Look at some specific web services protocols (such as
SOAP, RSS, WSDL, ebXML). Find a public web service and write a client for it. Design and
implement a web service. (Invent something as dumb as Twitter that is still worth
billions of dollars.)
- The cloud — Research how data storage and computation can be moved into
the "cloud" (that is, onto Internet servers). Look at cloud services offered by
Microsoft (Azure), Amazon (AWS), and Google (Google Cloud Platform). Try one or
more the free-tier services.
- The dark web and Tor browser — The "dark web" refers to the parts of the
web that are unindexed, unsurveilled, and anonymous. The Tor browser can be used to
access it. What is the dark web? How is it implemented? How is it used for licit and
illicit purposes?
- Cryptocurrencies — How do cryptocurrencies like Bitcoin use the network?
What protocols are used for making purchases with Bitcoin? How is anonymity maintained?
How does blockchain technology enable a "global database with no centralized point
of control."
- Mesh networking — Techniques and protocols for setting up
self-organized networks without central planning or authority.
- The decentralized web — The Internet is increasingly controlled by a few
large corporation, and its content is increasingly contained in "walled gardens."
Look at the idea of creating a more decentralized, distributed, peer-to-peer version
of the web. See https://decentralizedweb.net/faq/.
- Encrypted communication — How and why is communication encrypted?
What techniques are used for public/private key cryptography, key exchange, and digital
signatures?
- Identity — Many services require you to establish
your "identity", often with a user name and password. Look at techniques for
managing identity in a network environment. For example, investigate
Kerberos and LDAP, or the Microsoft versions in Active Directory.
Web servers prove their identity with "certificates." There are also personal
certificates, and web browsers can be configured to require personal certificates
for login. Certificates use public/private keys. Can we develop a PKI (Public Key
Infrastructure) to manage identity? Who would control it? And what about PGP
(Pretty Good Privacy) as an alternative?
- Single sign-on — You enter your HWS credentials to log in to many
services. Why do you have to do this multiple times? "Single sign-on" is the idea that
entering your credentials once should get you access to multiple services.
- Port scanners — A port scanner such as nmap is used to
search for open ports on a computer. It is often used to find computers running
services with known vulnerabilities that can be exploited. You could try installing
and using nmap (but please don't use it on off-campus computers, especially on
our ISP's routers, since they can get very touchy about that; I don't know how touchy
HWS IT is about using port scanners on our servers).
- VPNs — A VPN (Virtual Private Network) provides an encrypted
"tunnel" between networks. You can use a VPN to connect to the HWS network
from off campus. They can be used to avoid having your ISP snoop on where you
are connecting. They are used by contries with restrictive policies on the use
of the Internet to gain access to services in other countries. Look into VPN
implementation and uses.
- DDOS and botnets — In a Distributed Denial of Service attack,
the attacker floods a server with packets from many different computers. Often,
those computers are part of a "botnet" of computers that have been hacked and
taken over by the attacker. Look into DDOS attacks and defenses against them.
- Distributed programming in Java — Learn about RMI (Remote Method Invocation),
a Java API for distributed computing. Or develop your own distributed computing
API, which would allow "worker" computers to accept tasks and return return
results. (Tasks might be represented, for example, by objects of type
Callable.)
- Hadoop — Hadoop is a distributed computing technology that is used
for large-scale data processing. It is an open source implementation of the "map/reduce"
algorithm that was first introduced by Google.
See https://hadoop.apache.org/.
(I have a book about hadoop that might be outdated.)
- Social impact — Write a research paper on some aspect of the
social impact of networking, the Internet, social networks, or the World Wide Web.
Read and report on one of the many popular books on the topic, either
pro (for example Here Comes Everybody) or con (for
example Alone Together or The Filter Bubble).
- History of networking and the Internet — Write a research paper
on the history of networking.
- The Victorian Internet — This is a book about the telegraph
and how it had a similar impact in the 19th century to the Internet in the 20th.
I have a copy that I can lend, if someone would like to read and report on it.