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.
Server-side web development has not yet been my primary focus. I started my rediscovery of web technologies with JavaScript
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
in it.
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.
Sample projects
- SUSHI
- Despite the fact it started as an exploration of JavaScript more so than a PHP app, this project is a good
illustration of a PHP app.
- NED
- 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.
Resources
I would recommend the following resources for students interested in learning more about PHP;
My recent interests have been in JavaScript development and modern web apps.
Part of what I find fascinating with JavaScript is the plethora of frameworks available to developers.
As many, I started with JQuery,
JQuery UI,
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.
I also find the JavaScript language and its plethora of frameworks very interesting and relevant to introduce
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.
It is far from complete but I keep rewriting it as I hone my JavaScript skills.
Books
- JavaScript: The definitive guide,
by David Flanagan, 6/e, O'Reilly publisher, 2011
- JavaScript: The good parts,
by Douglas Crockford, O'Reilly publisher, 2008
- JavaScript Web Applications,
by Alex McCaw, O'Reilly publisher, 2011
- Test Driven JavaScript Development,
by Christian Johansen, Developer Library, Addison-Wesley, 2010
- Eloquent JavaScript,
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
- Node.JS,
MongoDB, and AngularJS Web Development,
by Brad Dayley, Addison-Wesley Professional, 2014
Websites
Reference websites;
Talks, Seminars
My previous experience with Linux has been as follows;
-
Served since 2008 as developer then coordinator for the USF BS in IT Linux Technologies
Specialization track.
-
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;
Linux Media
Zines related to Linux;
Linux Enthusiasts Web Sites;
YouTube;
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;
Professional Organizations
Linux Certifications;
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.
Reference Material
Reference Books;
Textbooks;
-
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.
Web Resources;
- Oracle's official Java Documentation
[website]
- Oracle's Java Tutorials Trails [website]
- Oracle's Java Certifications [website]
- Java Language & JVM Specifications [website]
Zines;
Educational Helpers
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;
Topic-Specific Resources
Generics;
Java Concurrent Programming;
Other Resources;