I have used various of this material in a number of college classes. The obvious would be a Distributed Systems class or Enterprise Computing or some variation there of. Additionally, I have used this in interface classes like Web Development or Mobile Development. In these classes, the database and middle tier is provided to students. Then focus on developing the user interfaces. Often an issue with Mobile Development classes is that students build stand alone mobile applications that do not access back-end data. This is rarely the case in industry.
Suggestions for using the material in a course.
- I often have students decide what they want to build. They seem to be more motivated if they are building something that they are interested in.
- To complete the reading and work through building Turtle Tracker, takes about a week for each module. I cover each module in 2 weeks. The first week is dedicated to readings and Turtle Tracker. The entire second week students apply the concepts to their application. Also, having students complete Turtle Tracker before they apply the concepts allows issues to be worked out before they need to apply the concept to their project.
- If your college does not allow 16 week semester combine modules 6 and 7 into one unit. You can also eliminate some modules, like Mobile.
- When student select a product to build discourage them from building user authentication and authorization. When students do this, they typically only end up with this at the end of the course and never get to the main data and functions of the application. Authentication and authorization is often handled by third party products anyways.
- Concerning grading, I set the cutoff for a passing grade (80% Grad; 70% Undergrad) as building 3 of whatever the concept is in the module. For example, if they build 3 desktop screens that is the minimum passing grade. To get more points, they can either 1.) build more of the concept 2.) improve the concept other ways (Ex, building a menu, making the screens look really professional, etc.)
- A great exercise that I often does is to each student pick a GUI component, develop a presentation and give it to the class (either live or recorded video). So, when we do JSP’s each student picks a HTML component to research; when we do Desktop each student picks a Java Swing component; etc. This helps others learn about the components, helps build presentation skills and fosters collaboration.
- I have students submit their code and a screen capture video (using OBS Studio) of them demoing it. It is very time consuming to try to get every student’s program setup and running on the professors computer.
To successfully complete this course students should have a few semesters of programming. Knowing some Java and Python is helpful. It is also helpful if students know some relational database.
ACM Curriculum Mappings
This course material can be used to help fulfill many areas in the ACM Curriculum.
- Enterprise Architecture
- Parallel and Distributed Computing
- Mobile Computing
- Web Development
J2EE/Jakarta is older technology. Why not use something newer?
There are countless technologies and products that can be used to create this types of systems. No matter what is selected, the probability that students will use it on the job is low. The products were selected to minimize coding time, installation, configuration, etc. What students will take away from the course are the concepts can be apply to all distributed systems: remote interface, data access objects, web services, load balancing, scalability, etc.
Why don’t you proved the source code for all of the coding?
I want students to type in most of the code themselves. This helps them understand the material better.
Why don’t you build out all of the screens and fields for the Turtle Tracker database?
Increasing the amount of material and videos will jeopardize students having enough time to complete their project. Ideally, the course can be completed in normally 14 or 16 week semester. Students at most might send 8 hours per week on this course. Let’s assume 120 hours total. When I teach the course I have students spend 1/2 of the time working on their distributed system (80 hours). Students should have readings each week that will consume time. Currently there are 2 to 3 hours of videos, but it takes students more time to type the examples in and get them to run. So, I try to minimize the videos to the minimum needed.
Also, just showing students the minimum allows them to grow their products in different directions as they wish. I have had students:
- Build out menu systems.
- Work on making the screens look very professional.
- Some spend a lot of time making CRUD (Create, Read, Update and Delete) screens.
- Some integrate art into the screens.
- Data validation.