This page is mainly for prospective undergraduate students who are considering working with me.
I always look for opportunities to engage undergraduate and graduate students in my research or technology interests. Make sure you take a look at the "Research" and "Technology Interests" sections of this site to see what this generally entails.
I am available to supervise the following kind of projects in both the Computer Science & Information Technology programs;
Feel free to drop me a line if you have any questions
This page has a few things to keep in mind before we start working together. These apply to most projects but were written with mostly undergraduate students in mind.
For most projects, we end up using a subset of the following tools. I put here information to help you get started setting your development environment.
We generally use a Scrum-inspired project management technique during development-oriented students projects. The following are introductory references on Scrum;
Most projects, if not all, are hosted on Sourceforge.net or Unfuddle.com. We use subversion as a versionning system to commit regularly the source in small increments of improvement. This allows me to provide more detailed feedback as I monitor your commits. Often, this results in identifying misconceptions much earlier. It also helps ensuring of the quality of the source.
Before we start any project, make sure you have an account on Sourceforge.net. Use a user name which identifies you, e.g. John.Smith, not a pseudonym, e.g. GreenYonder. When you are ready, send me a request to add you to the project you are going to work on.
Since we will be using versioning, and most likely subversion, make sure to take a look at this freely available book on subversion. No need to be an expert but familiarize yourself with the rudiments. If you are working on Windows, Tortoise SVN is a neat subversion tool.
If you are developing in Java in one of our projects, make sure to download the JDK. You will need a JDK and not just the JRE for your work.
Some projects will require you to work in a Linux environment. More often than not, students are using Windows on their personal systems. For this reason, I recommend to download and install Virtual Box and its Extension Pack.
You will then need to download an ISO image of a Linux distribution. We generally use either Ubuntu or CentOS. For the latter, I recommend downloading the i386 NetInstall ISO file for CentOS 6 which works best as 32 bits guest under virtual box. You will find a tutorial on using the NetInstall image here & should specify the following URL for the mirror http://mirrors.sonic.net/centos/6/os/i386/. Make sure you remove the ISO image from the virtual CD when you reboot or you will get a INT18 error. This is apprently a old standing bug with virtual box...
When you are done installing either distribution, make sure that you install the guest additions which will allow your Linux guest OS to work alongside the virtual box hypervisor. For CentOS, you might want to do it as explained here
Last but not least, email me to discuss which references might be appropriate based on the languages & technologies you will be using. USF Library is your friend.
You might also find some references of interest in the "Technology Interests" section of this site
This tab will give you an idea of the topics I previously explored with different students.
Get in touch with me at least 2 months before the start of the semester during which you want to work on an undergraduate student project with me.
During the semester preceeding the one during which you want to do your project, we will prepare the letter of intent & the detailed work schedule. The former will be sent to your academic advisor in order for them to allow you to enroll. The latter is pretty much a detailed description of the work to be done. Every bit of paperwork needs to be out of the way before the previous semester ends so we hit the ground rolling in the project itself.
Topics depend on what technologies you want to gain experience with. I always recomend to students that they select topics aligned with what they want to focus their carreer on.
Here are examples of topics used in the past for this kind of projects;
To give you an idea of the types of undergraduate project I have supervised in the past, this tab gives a listing organized by topic;
The following projects share a focus on Linux technologies from the perspective of system administration.
|2016||James Cherven||Building and Automating Zettabyte File System (ZFS) Storage, Backup, and Recovery Services in Linux|
|2016||Dominick Rapacioli||Investigating Ubuntu Cloud Viability for Student Virtual Machine Setup|
|2016||Aaron Boshers||Backup for USF NREC|
|2011||Matt McDermott||CLUE Virtual Appliance||NSF CLUE|
|2008||Jarrod Chastain||CLUE Virtual Appliance for Peer Programming||NSF CLUE|
|2007||Alex Kranh||Developing a VMWare Educational Virtual Appliance||NSF CLUE|
|2006||Janet Offray||Linux System Administration Laboratories|
|2005||Mithun Sawant||Oracle Management on Fedora C4|
|2005||Clark Godwin||Linux Kernel Modules Development|
|2005||Eric Murray||Debian Packaging for the Warewulf Project||NSF SOFTICE|
|2005||Steve Lambropoulos||Remote Storage Technologies (AOE, iSCSI)|
|2005||Nestor Rentas||Linux Stealth Intrusion Detection & Logging|
|2005||Andrew Wong||Open SSI Clustering on Classroom PCs||NSF SOFTICE|
|2004||Gary Cohen||Debian Linux Installation of a Private LAN|
The following are projects focused on Java, or web development technologies such as LAMP & MEAN stacks.
|2014||Terrence Hughes||Web-based student project manager in AngularJS|
|2014||Charles Kittredge||Web-based student project manager in PHP|
|2014||Stephen Kozakoff||NED - Eclipse & Netbeans Plugins||NSF CLUE|
|2014||Nghiem Tran||NED - Novice Error Detection Web App||NSF CLUE|
|2013||Adam Feller||NED - Novice Error Detection Web App||NSF CLUE|
|2012||Joshua Maun||Surveying Undergrads Study Habits & Initiatives||SUSHI|
|Surveying Undergrads Study Habits & Initiatives||SUSHI|
|2007||Cecil Thornhill||Independent Study: Rapid Web Prototyping with Ruby|
The following are projects focused on Evolutionary Algorithms, many of which have involved Java development.
|2015||Paul Burton||Evolving Parsons Puzzles||NSF EvoTutoring|
|2003||Robocode: Evolving Intelligent Controllers in 2D games|
|2002||Philip Der Hovsepian||Co-Evolutionary Time Dependent Optimization||Swiss NSF ACOLITE|
|2002||Urs Forster||Cellular Genetic Algorithms||Swiss NSF ACOLITE|
|2001||Group of two students||Evolving Time Schedules for an Engineering School|
|2000||Five groups of five students||Netmazers: An Artificial Life ESSI Project|