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.

Advice

Expectations

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.

Scrum

We generally use a Scrum-inspired project management technique during development-oriented students projects. The following are introductory references on Scrum;

We may either use xls sheets, e.g. Olivier Gerardin, to help us keep track of progress in an easy way, or the Kunagi software.

Subversion

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.

Java

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.

Next step is to download the Eclipse IDE Standard Edition and its Subversive plugin to interact with the repository.

The installation instructions are available here along with a user guide to help you check out the repository and start working.

Virtual Box

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

Resources

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;

Linux System Administration Projects

The following projects share a focus on Linux technologies from the perspective of system administration.

Year Student Title Project
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

Software Development Projects

The following are projects focused on Java, or web development technologies such as LAMP & MEAN stacks.

Year Student Title Project
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
2011 Duong, Aubertin,
Ennaime, Metzer
Surveying Undergrads Study Habits & Initiatives SUSHI
2007 Cecil Thornhill Independent Study: Rapid Web Prototyping with Ruby

EA-related Development Projects

The following are projects focused on Evolutionary Algorithms, many of which have involved Java development.

Year Student Title Project
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