This part of the site is really, really, I mean really, rudimentary. I plan on adding
relevant links to guide students who are interested in these topics but I am only
able to do this on my copious free time ;p
In the meantime, my Sourceforge.net Profile
hosts projects related to grants, research, or simply things I tinker with in order to learn new technologies.
I should mention here that, while I want my students to be equally versed in a wide range of technologies,
my personal preference is for open source technologies.
They have afforded me a freedom to experiment I have not experienced with vendor technologies.
Not mentioning the underlying philosophy put forth by open source developers who contribute
countless hours to make our digital world a better place.
and its plethora of frameworks. However, I find myself often relying on PHP and SQLite for quickly prototyping web apps which
do no require a high level of user-interactivity. I quite enjoy the language for this purpose and might just invest more time
I use web development in most of my undergraduate student projects. I feel these are great opportunities to teach the latest
web technologies in a very hands-on manner. I also regularly leverage web development tools for the software development
parts of my Computing Education Research grants.
illustration of a PHP app.
- This Novice Errors Detection web app writen for the CLUE project is another
good example of this kind of work.
- Web PT
- The most recent, and least polished, of the bunch. Started in summer 2014 as a quick & dirty prototype to help
students leverage peer testing in a programming assignment used in IT Program Design.
Still in the works.
I would recommend the following resources for students interested in learning more about PHP;
As many, I started with JQuery,
tried my hand at some small mobile web app with JQuery Mobile.
Right now I am looking to start a project leveraging AngularJS.
Probably a full rewrite of Sherpa would be a good way to dig into this technology.
students to advanced OOP ideas; e.g. Model-View-Whatever design pattern, dependency injection...
Same goes for functional programming features like closures.
These enable web development to become a motivating playground for our IT students to learn about and tinker
with advanced OOP ideas
My learning of the language led me to write on my spare time a modest programming environment named
Sherpa, alongside a few minor tools.
by David Flanagan, 6/e, O'Reilly publisher, 2011
by Douglas Crockford, O'Reilly publisher, 2008
by Alex McCaw, O'Reilly publisher, 2011
by Christian Johansen, Developer Library, Addison-Wesley, 2010
by Marijn Haverbeke, 2/e, online free edition,
No Starch Press Edition, 2014
- Pro JQuery, by Adam Freeman, 2/e,
Apress Publisher, 2013
- Mastering Web
applications Development with Angular JS,
by Peter Darwin & Pawel Kozlowski, Packt Publishing, 2013
MongoDB, and AngularJS Web Development,
by Brad Dayley, Addison-Wesley Professional, 2014
My previous experience with Linux has been as follows;
Served since 2008 as developer then coordinator for the USF BS in IT Linux Technologies
Taught since roughly the same time our User-Level intro to Linux which is part of the
above-mentioned specialization track.
Served as system administrator for some of my NSF-funded Computing Education Research projects from 2004 to roughly 2009.
Most notably, I have tinkered with load-balancing clustering & automatic provisioning before this
was made trivial by Ubuntu cloud technologies. Fun times. See SOFTICE for details.
Since 2009, I have been mostly doing system administration on Linux virtual machines serving LAMP stacks, web contents,
and custom web applications developed for various research projects.
In 2016, I served as interim lead for the system administration team of the USF Computer Science & Engineering Department.
During this time I mostly explored Docker technology, DNS, NIS and helped virtualize some of the department services.
From 2004 to about 20010, I have used Loadable Kernel Modules as a way to introduce my IT Operating Systems students
to realistic operating system assignments.
Back in 2003 or so, I co-founded with my wife the Polk Linux User Group. We followed its various
incarnations as community-driven group, student association, then joined the Linux Enthusiasts
meet-up group which held its meetings at the USF Lakeland campus for a while.
General Links about Linux
For many students new to Linux, the following provides a good overview of both uses of Linux in
industry and its adoption statistics;
It is a good idea to then move on to some more specialized sites;
Zines related to Linux;
Linux Enthusiasts Web Sites;
Linux User Groups
These are great environment to find other fellow Linux enthusiasts to mingle with.
I will try to keep the list below up to date with LUGs available in central Florida.
Do not hesitate to get in touch to have your LUG added.
Our online students are from everywhere in Florida, helping them find a LUG near them is the point of this list!
Educational Material about Linux
The following are resources providing a more structured approach to learning about Linux
For those of you interested in developing on the Linux platform;
For those of you interested in kernel internals;
I have enjoyed programming in Java since about 2001.
Currently, I still maintain the Jade Framework
which I use to design & apply new Evolutionary Algorithms variants.
I have been teaching regularly the following USF BSIT program courses;
introductory programming in Java (since about 2005), and,
OOP for IT in Java (since 2017)
After designing the course for the new USF MSIT program back in 2010, I started teaching our
Advanced OOP Programming graduate course, also focussing on JVM languages.
Daniel Liang's Comprehensive Introduction to Java [website]
This one covers all the fundamentals you should be exposed to throughout an undergraduate degree
Zyante Interactive Textbooks [website].
Another novice-friendly textbook.
Princeton's Interdisciplinary Intro to Java [website]
Yet another novice-friendly textbook with a spin on introducing core computer science concepts while learning Java.
Check out also the authors' Java Programming [Cheat Sheet]
Cay Horstmann's Core Java for the Impatient [website]
This one is not meant for first time programmers but people who are looking for a textbook to learn Java as a second or third
programming language. Good for an undergraduate elective or a graduate-level quick recap on things you might not have seen before.
- Allen B. Downey's Think Java [website]
Freely available introductory java textbook.
- Oracle's official Java Documentation
- Oracle's Java Tutorials Trails [website]
- Oracle's Java Certifications [website]
- Java Language & JVM Specifications [website]
If you are just getting started in learning how to program, the following are resources which might help you out;
Integrated Development Environments
These IDEs are generally geared toward novice Java programmers as they offer a clean and easy to learn
interface that does not get in your way of learning the language itself.
Unlike the IDEs listed above, the following provide many more features generally useful to more
seasoned Java programmers;
Java Concurrent Programming;