The Application Domain of the VITAL Project

As outlined in the lecture notes for the class, our premise for the vital project is to "build a "fun" open source multi-platform educational software system, in which users chat with artificial characters who tutor them on fundamentals which prepare them for computer science." 

Goals

The goals of our project are the following:

Each of these on their own brings a certain influence on the tools and choices we will need to make in order for us to be able to produce a usable result.

Creating a project with a goal of being fun could be difficult simply for the fact that fun is something that varies from one person to another.  A real world example is some people greatly enjoy playing sports for "fun" while others will spend their free time reading a book or working on cars.  While each is drastically different, they all do have certain aspects in common.  Generally, people do not find something "fun" if it is tedious or cumbersome for then to perform.  This would likely be a target for us in implementing our VITAL system; avoid being overly tedious and cumbersome on our users but be an engaging and enjoyable experience.

My experience has been that people learn drastically better, when they are learning something that they want to learn rather then something that someone else thinks they need to learn.  Perhaps in making our project educational we need to ask ourselves how we can make people want to learn about Computer Science topics rather then expect the motivation to be solely self-motivated.

The VITAL project

Motivational References

Temple of the Sun

The first thing that I thought of when we first were discussing this project was a game that Sun Microsystems put out as a completion, (and also to get people to download their compiler : ) ). The link for the site is:

http://www.templeofthesungame.com/Sun/TempleOfTheSun/

This game was developed entirely out of C++, which is another reason why I think it is a good example. It's like an Indiana Jones type game where you go around and jump over things and shoot little bugs and there are also checkpoints where you need to answer a question right to pass. These are C++ questions that start out easy and then get harder. Here is an example:

int myArray[10];
myArray[10] = 10;

This code generates an error because:

a) There is no int in c++
b) myArray is a key word
c) The index of 10 is out of range
d) All of the above

After you pass each checkpoint, get a gold coin or kill a bug, you get more points. If your health goes below zero, you start at the last checkpoint and start with zero points. I think this would be a good model. We obviously wouldn’t be able to create something that nice, but it would be good to shoot for something similar.

LearnKey (http://www.learnkey.com)

LearnKey is an education software program that trains/teaches you the subject of your choice.  It uses java/flash/windows media player to provide a platform to teach and demonstrate how to do certain tasks and ideas.  I found it to be quite fragile and quite boring to use.  For example, it would only work on windows platforms due to the method used to access the local file system required the Microsoft java virtual machine.  It would throw exceptions when using the Sun JRE.  It was also not very easy to navigate and interact with the software once you where running it.  Often you did not know if it was still loading some content or some problem had happened because its user feedback on what was currently happening was very poor.  One positive aspect of this software was its subject matter is broken up into smaller objects.  The user was able to perform the tasks and complete them at their own time.

World of Warcraft (http://www.worldofwarcraft.com)

World of Warcraft is the award winning MMORPG game from Blizzard Entertainment. With 9 million people playing the game there are surely some lessons to be learned on how to make something fun and enjoyable.  I have played this game for over two years now and I continue to enjoy playing it.  I attribute a majority of this to the ability for many tasks to being done on my own time (though often with certain tradeoffs) and at my own pace.  The game also provides a large social network, which has also been a factor in me continuing to use Blizzard's product.  The process by which characters in the game gain experience as well as profession proficiency do have aspects that might be worth modeling for out own progression and experience tracking we will likely need to implement our Vital project.  Also worth mentioning though, I have found the need in an environment like World of Warcraft that it does get irritating and frustrating when you find something that you do not know but are curious about it.  Luckily, many websites act as a reference (such as http://www.wowhead.com or http://www.wowwiki.com).  Having a built-in method of allowing users to lookup topics and find the information they need could be very beneficial.

The Education Arcade (http://www.educationarcade.org/)

The Education Arcade is a project whose mission is "to demonstrate the social, cultural, and educational potentials of videogames by initiating new game development projects, coordinating interdisciplinary research efforts, and informing public conversations about the broader and sometimes unexpected uses of this emerging art form in education."  They have many resources about research into using computers to educate through more engaging (ok...games) experiences with the computer.

NCSALL (http://www.ncsall.net/?id=303)

NCSALL stands for the National Center for the Study of Adult Learning and Literacy.  This particular document talks about the use of computers as a tool for education and touched on topics that I thought could have relevance in implementing a computer learning system.

PLATO Learning (http://www.plato.com)

PLATO Learning is a company that provides many different level of educational software to schools.  My previous employer used this software was used as an additional teaching tool for some classes.  They have used PLATO for many years.  The newer versions are web based and make use of flash/shockwave plus their own plugins to provide the content to users.  From my experience, people did enjoy using PLATO.

Learn4Good

http://www.learn4good.com/games/adventure.htm

This site has adventure games, such as puzzles and games that we could incorporate into our different stations. One of the games is a find the items in a room, which would be good for younger kids learning the different parts of a computer.

Addicting Games

http://www.addictinggames.com/adventuregames.html

Most of these games wouldn’t be considered kids games, but I thought it would be a good starting point, as we can model any game to our specific need and age level. For example, we can turn a shooting game or whatever into a learning game by adding checkpoints where they have to answer questions and whatnot.

Learning Planet

http://www.learningplanet.com/ This is probably the closest thing I could find to what we are looking for. When you first go to the page it asks you what grade level you are: either pre-k through kindergarten, 1-3rd grade or 4-6th grade. Then you can log in by creating a user name that keeps track of your progress. Each game has a specific area that it focuses on, such as geography or math. This might be another good example of something that we can use for the stations.

Problems

  1. Finding an effective means of providing introductory computer science education through a computer program. Since we are trying to design this project for younger students who aren't necessarily familiar with a typical computer science curriculum, it would be necessary to make this program very easy to use and be fairly engaging to the user.
  2. Making such a program easy to obtain, install (if necessary), and use. This program would have to be cross-platform (*nix, Windows, Mac OS X), and require low system resources.
  3. This program must have a modular design that allows for easy content updates, and updates to the system itself.

Library Content Resources

Digital Library Wiki

Wiki on Digital Library: Webpage with info on digital libraries. Shows problems, advantages, and examples.
Digial Libraries

Pre-CS Resources

Instant Interactive Drills - Learn basic math skills


This program shows us what the VITAL project should look like.
It's intersting enough to stimulate kids and esay to use. Here are some screen shots.

Computer Science Content Resources

University of Saskatchewan (http://www.cs.usask.ca/resources/tutorials/csconcepts/index.html)

This is a link to the University of Saskatchewan computer science department’s tutorials.  Students covering various different topics have created the tutorials.  This could be a potential source for learning topics for our system.  Some of them implement quizzes as well.

Stanford CS Education Library (http://cslibrary.stanford.edu/)

The Stanford CS Education Library is a collection of various Computer Science materials.  It has multiple resources (one interesting pointer video).  These tutorials could act as another source for potential ideas to implement as lessons to teach.

MIT OpenCourseWare (http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/index.htm)

This site has many topics on computer science.  They include calendars, assignments and exams/quiz that are given for the courses. 

ACM K-12 CS Model Curriculum, 2nd Edition (http://csta.acm.org/Curriculum/sub/ACMK12CSModel.html)

The ACM k-12 model curriculum lays out the needs to teach the discipline of Computer Science in k-12 education.  It could be a good resource for topics to be taught in our project. 

Playing at Reality: Exploring the Potential of the Digital Game as a Medium for Science Communication (http://www.gamasutra.com/education/theses/20050802/aitkin_01.shtml)

Free registration may be required to read thesis.  This Doctoral thesis talks about using the digital game as a medium for communication about scientific subjects.

Basic CS - http://www.aihorizon.com/essays/basiccs/index.htm

A completely cheesy introduction to computer science. Has pages covering different base systems for numbers, recursion and iteration, lists and arrays, sorting algorithms, data trees, and a few other things.

XTutor - http://icampus.mit.edu/XTutor/

MIT has something called Xtutor, but it's geared towards providing tutorials for undergraduate computer science students and is less interactive than I believe VITAL should be.

CPlusPlus.com

This website has a wealth of information regarding the C++ programming language and could serve both as a programming resource or to help formulate good questions and programming problems for the VITAL project: Cplusplus.com

CProgramming.com

I've found many web pages that contain tutorials. The common features are: Example of a Tutorial

Software Development Tools

Java

Java - There are quite a few reasons that I feel Java would be superior to suggestions taken in class.
Java is cross platform.
This will take the pain out of trying to make sure that C++ code is compatible between windows and *nix systems.
Java is different.
Students here at the UI CS program are taught C++ in introductory courses, so this is what they are used to. I feel it would be a welcome change to utilize a different language for the project.
C++ is difficult to use.
Although C++ is what we are used to, it is not a garbage collected language, and thus more difficult to use. C++ doesn't readily have the graphics capabilities we would need for such a project.
Eclipse is awesome.
It's cross platform, so every student would be able to use it.

Applets
It might be possible to write this whole project as a java web applet that users could reach just by going to a website. http://java.sun.com/applets/ documents what can and cannot be done with java applets, and provides good documentation on developing applets.

As a side note, 99% of the games that I came across were either flash or java apps. The ones that I am assuming were not flash or java had to be downloaded. The downloading option is one that we might have to consider, if we are to do this in C++. Otherwise, we might want to write the majority of the code in java. This way we wouldn’t have to reinvent the wheel and can use existing systems as guidelines to help us develop our own.

Bug Tracking

Since we are going to have many people working on the project, we are going to need some way to track bugs that exist in code that other students have written. There seem to be many issue tracking systems available. http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems lists and compares tracking systems in a huge table. One student in class suggested we use one called Trac, because it integrates easily with SVN, however, looking through the table, one finds many issue trackers that integrate with SVN. Since we are only going to be doing the project for one academic year, I believe that the simplest issue tracking system would probably be the best.

Trac (http://trac.edgewall.org/)

Trac labels it's self as an "enhanced wiki and issue tracking system for software development projects."  It is integrated directly with Subversion and has built in issue tracking.  It has the advantage of being more then just a bug tracking system as well as providing a wiki (nice for sharing information) environment.  It is used by many open source projects.  Trac could be our bug tracking software as well as a central place to document plans/roadmaps of progress and ideas.

Bugzilla

Bugzilla is developed by Mozilla for tracking bugs on their projects (including Bugzilla itself). It's web-based nature is a plus for our project, since we may not always be able to get together to discuss bugs. As with other Mozilla projects, Bugzilla is open source and is free to use. Bugzilla uses a MySQL database for a back-end, which is also freely available.

Eclipse (http://www.eclipse.org)

Eclipse is a free open source Integrated Development Environment (IDE) that is written in java.  It runs on all the major platforms (Windows/OSX/Linux) and is largely plugin driven.  It is generally considered a Java development tool but plugins for UML, PHP, HTML and even C/C++ (I use this on Linux regularly) as well as plugins that allow the access to cvs/svn systems integrated into the system.  Concerning C/C++ development, I believe only the gnu line of compilers are supported but it does work on windows with mingw.  Eclipse provides a flexible and powerful development environment that runs on multiple platforms.

Eclipse's support for UML includes generating method prototypes from UML descriptions through what's known as the Eclipse Modeling Framework.

Eclipse links:

MySQL

This is the most popular open source database at the moment. Because of my lack of experience working with databases, I'm going to suggest we use MySQL for this reason. dev.mysql.com/doc/refman/5.0/en/connector-j.html This link describes what is necessary to utilize java and MySQL effectively.

Tutorial - http://www.tizag.com/mysqlTutorial/

A MySQL tutorial using PHP. Would be helpful to teach newcomers to MySQL as well as another example of a teaching layout.

Subversion (http://subversion.tigris.org/)

Subversion (referred to as svn) is a free open source version control system that was largely designed to replace CVS and so it implements most of the same features as well as some fixing annoyances that had irritated users of CVS for year.  It is in use by many different projects and is quite popular in the development world such as sourceforge (http://www.sourceforge.net) and the KDE/GNOME projects.  Clients exist on all major platforms as well as plugins for programs such as Eclipse.  Subversion gives an easy to learn source code revision control system that is popular.

Git (http://git.or.cz/)

Git is a free open source distributed source code management tool.  It was designed to be fast and efficient and is becoming increasingly popular for having unique features over its competition.  Since it is a distributed tool, a cloned git repository is fully working with tracking and switching between versions even without network access.  Patches can then be "cherry picked" from one working set into another.  It generally has a steeper learning curve to that of Subversion.  Git is in use by man projects, some of which are very large such as the Linux Kernel and the WINE project.  Git provides us with a fast distributed (each checkout is effectively a full backup) revision control system as well as tools to narrow in on code breakages such as git-bisect.

TortoiseSVN - Open source subversion client for Windows, not meant to integrate into any specific development environment.

Cairo (http://www.cairographics.org)

Cairo is a cross platform open source vector graphics-drawing library.  It allows the output of high quality vector graphics to different platforms (Windows/OSX/X11) as well as PDF, PS, SVG and images.  It is primarily used as the graphics rendering technology behind the GTK+ toolkit as well as the GNOME project.   It will also be the rendering engine of the up coming Firefox 3.  It is written in C and has binding for multiple languages.  Cairo could benefit us by providing high quality display independent graphics.

SDL (http://www.libsdl.org)

SDL is a cross platform open source multimedia library.  It allows low-level access to the resources of the computer such as audio, video and input.  It has built-in integration for OpenGL allowing the same initialization code to work on all platforms it supports.  It has many add-on libraries that add various abilities from font rendering to sound mixing.  It works on all major platforms and language binding for most languages.  SDL could be useful if we chose to not use one of the mainstream toolkits and implemented a much more basic interface of our own designing. 

OGRE (http://www.ogre3d.org)

OGRE stands for Object-Oriented Graphics Rendering Engine.  It is a 3D rendering platform rather then a game engine.  It is available under multiple licenses including open source and runs on all major platforms.  It supports both OpenGL and DirectX as rendering systems.  OGRE claims to be design led rather then feature led and as such is very proud of its object-oriented design.  It provides many built-in scene managers as well plugins to extend its capabilities.   It has the ability to conveniently integrate with SDL.  This could be of use to us if we chose to do some type of 3D graphics but did not want to have to mess with the individual platform difference we would have to otherwise. 

Mozilla Plaftorm/Firefox/XUL Runner (http://www.firefox.com, http://developer.mozilla.org/en/docs/XULRunner)

Firefox is a cross platform open source web browser.   It also provides the environment to create other applications using its platform.  Applications are largely defined in XUL (and xml user interface language) and then JavaScript is heavily used to interact with the interface.  This could provide a cross platform foundation on which to build a client.  Since it based off the browser technologies all the features from it are available such as the canvas/SVG abilities in firefox 2 and firefox 3.

Silverlight (http://www.microsoft.com/silverlight/)

Silverlight is Microsoft’s attempt to make a competitive product the Adobe's Flash.  Microsoft provides an implementation for both Windows and OSX.  The mono project has begun implementing Silverlight for use on Linux and other supported mono systems.  There version goes by the name of Moonlight.  Silverlight is meant to deliver media rich interactive experiences over web to its users. 

GStreamer (http://gstreamer.freedesktop.org)

GStreamer is a graph based media framework. I allows the user of it to create of graph of the needed media processing elements to perform needed operations on video and audio. It is written in C through the use of the GObject system. It runs on all major platforms (Windows, OSX, Linux) and is opensource. It is the official media framework of the GNOME project but is also used in the Flumotion streaming server (http://www.flumotion.net) and the Songbird (http://www.songbirdnest..com).

PHP

Home page
http://www.php.net/
Tutorial - http://www.w3schools.com/php/default.asp
A beginner's tutorial to PHP. Would be helpful for class members who have not messed around with it at all and need to brush up on coding. Also serves as an example of a teaching method.

Ant

Apache Ant
Like "make" for Java

Qt: Cross-Platform Rich Client Development Framework

QT is an open source cross platform C++ GUI toolkit. It provides many built-in widgets such as buttons and canvases as well as the ability to write your own. It has GUI development tools to aid in the creation of your typical user interface. QT is the backend toolkit used by the KDE project. It is well supported and actively being worked on. QT would provide us with a cross platform toolkit.


Qt is also available to Java programmers through Qt Jambi.
There are three main platforms in computer systems: MS Windows, Mac OS, LINUX. Using Java, the Graphic User Interface can be implemented on multi-platform. On the other hand, in C++ world, the Qt will be the best choice for GUI programming.

Qt integrates seamlessly into eclipse and it is a great GUI development tool. I am unsure of its networking capabilities but it does provide both 2d and OpenGL graphics capabilities and the demos seem to imply networking, database and awesomeness compatibility.

4) QT-Eclipse integration
If you decide to look into QT this is a great place to go for information on integrating QT into eclipse. There is a small install file distributed by Trolltech (the makers of QT) and apparently this integration runs on linux as well as windows. They say support for MacOS is on the way soon.

GTK+ (http://www.gtk+.org)

GTK+ is an open source cross platform toolkit.  It runs on Linux primarily but works on Windows and OSX support is mostly implemented.  It is written in C using the GObject system though binding for most languages are available (C++, python, perl, php, ruby, etc).  It provides many built in widgets and the ability to make your own.  It is used by the GNOME project as the backend toolkit.  GTK+ would provide us with a cross platform toolkit chain.

OpenGL

We can make a gorgeous program with 2D or 3D graphics.
It takes much time to develop something by OpenGL than you might think but it shows pretty good scene.
Since Qt is limited to implement advanced graphics, we can add OpenGL.
OpenGL is running on multi-platform not restricted to Windows(Direct X) or Mac OS(Quartz Composer).
The pros of OpenGL are described here

The Manual(and Tutorials) for OpenGL

There is the best book for OpenGL and it's free:

Course Management Systems

Moodle http://moodle.org/

Moodle is a very popular open source online course management system. It has a lot of features of our project system.

UML

Unified Modeling Language - http://www.uml.org/
The home of Object Management Group and UML. Includes basic information and a simplistic introduction to UML. Also has links to more resources.

list of UML tools
a list of UML tools which can be sorted by company, product name, version number, date of last release, platform it will run on and price (some on this list are free)
Dia
The tool mentioned in class.
Poseidon
Another free UML tool.
BOUML
A Open source UML tool providing code generation. Works on all popular platforms.
Argo UML
Open Source UML Diagram Software. It is Java Based and can be used straight on the web, but can be downloaded and ran on Windows, Mac, Linux and Unix. Can generate C#,C++,Java, and PHP code.
Would be helpful in creating UML Diagrams
AgroUML
http://plg.uwaterloo.ca/~migod/uml.html
This page compares some UML drawing/modeling tools. From what I can gather for this first semester we aren't interested in the modeling portion. It seems like dia is the best of the drawing programs listed, but there are a couple more for consideration.

UML Tool - TopCoder UML Tool
The TopCoder UML Tool is a pretty new tool developed by TopCoder. By "developed by TopCoder" I really mean that TopCoder members competed to build components that were used in the UML tool. Even the project manager was a TopCoder member. The result is a brand new UML tool that TopCoder hopes will be easier to use than Gentleware Poseidon tool that TopCoder normaly uses. The tool is capable of modeling sequence, class, use case, and activity diagrams. The tool also allows other documentation to be attached to the diagrams easily. The disadvantage of this software is that it is still in Beta (version 0.1.4), and may still have some bugs. On the plus side, it is free and available for use in an educational setting.

Educational Theory

Wikipedia

1) Wikipedia’s article on Virtual Learning Environments
This article is related very closely to what we want to do. It seems to think that virtual learning environments should be directly linked to classes and does not give the impression that most “VRE”s are as interactive as the software I imagine we will create.

2) Wikipedia’s article on Educational Technology
This article is an interesting read and very relevant to our project.

3) Wikipedia’s article on Learning
This article gives a brief overview of some of the types of learning and teaching. A good place to start in order to get an idea of what it is we need to accomplish.

4) Wikipedia’s article on Teaching
This article is an overview of various aspects of teaching. The section on education process is somewhat relevant.

University of Cambridge

Runs an assessment department http://www.cambridgeassessment.org.uk/ - Research on methods and applications of assessments in education.

Selected Commercial Products / Companies in this Space

Quantum Simulations http://www.quantumsimulations.com/

An example of advanced online tutoring software, incorporating AI techniques. This seems to be very similar to what the class' project will be but on a different subject and much more complex.

ALEKS

ALEKS - Assessment and LEarning in Knowledge Spaces is a Java-based system developed by New York University and the University of California, Irvine. It uses artificial intelligence to asses a student's knowledge and then appropriately teaches new concepts to the student.

Konnichiwa iKana - learn Japanese



This program can be another good example of educational software. It's pretty tidy and simple.
If a child studies with a book with only text ,like Object-Oriented Software Engineering, he/she will quit studying within a short time. The program need to interact with users and to make users intersting like a game.

Hosts

Assembla

Assembla - Free repository for developers. Includes wiki, chat, Subversion, and Trac tools.

UnProcessed Stuff


Learning Software and Websites

Note on this section: I found many software applications that looked promising however very few of the programs that seem to have merit have free demos or are free.

1) GoMath.com Games
This is a good interactive teaching site. It has some great minigames to improve basic math related skills. What it lacks is direction and testing of the student’s skills.

Tools

Educational Related Links:

I found an interesting link http://www.funderstanding.com/about_learning.cfm  that points to many more links regarding learning and the fundamental differences between different people/learning styles.  I feel that further reading into some of the links here at this site can better help us understand what types of learning applications we should create to better cover all the aspects of learning.

Since the focus of our project is mainly geared toward the younger crowd I found a good deal of example links that have math related learning games that would help benefit a student/child in their journey to becoming mentally ready to dive into an Engineering related field later in life.

http://www.oswego.org/ocsd-web/games/spookyseq/spookyseq2.html Is a Cool site that could help a child master the recognition of patterns while also learning to perform simple edition. I do not really see any penalties or anything for many of the learning games I found online, the only thing I can see that this particular game offers when the player enters the incorrect value is that it gives out a terrible sound. One thing that could benefit a game like this would to be for one, offer a hint, or maybe take notice of the error and maybe add in one of the correct values to help the player along until they are able to master the current skill setting.

http://forums.cisco.com/CertCom/game/binary_game_page.htm Is a sweet game that I found that helps a student learn how to do binary numbers and how to quickly calculate them, add them together etc.  It was actually quite fun and I played it for a while =)

http://jwart.com/games/binaryfun.php is another game that would not be a bad option for binary type learning.

Development Tools:

This looks like a pretty cool development tool http://anjuta.org/screen-shots looks like it is platform ready for unix/linux environments. Has a built in compiler and looks like it works a lot like visual studio but in a unix environment.

Another alternative would be http://www.eclipse.org/ which actually looks like it might be far less prone to bugs and is not in a beta phase as far as I can tell.  I think I heard mention of this development environment in class, but I am placing it here in this archive since I support the idea of using this tool to aid us in our project.

BUG Reporting:

I have used and actually use this tool at work for tracking bugs related to network related issues. It is called bugzilla and it integrates well with MYSQL databases, something I have never really coded or dealt with in the past very much, but it would not be a bad bug tracking system where everyone could possibly track new changes to bugs etc.
http://www.bugzilla.org/


Bugzilla's system requirements include:

Currently supported database systems are MySQL and PostgreSQL. Bugzilla is usually installed on Linux and runs using the Apache HTTP Server, but Microsoft Internet Information Services or any web server that supports CGI can be used. Bugzilla's installation process is command line driven and runs through a series of stages where system requirements and software capabilities are checked.

 

Languages


I think since this project should honestly be done as a standalone product because using 3D technology in a web-page may prove to be more difficult than we think. I think we can split the project into 2 parts. Web based for all that we can and then stand-alone for 3d aspects.

Visual C# http://msdn2.microsoft.com/en-us/vcsharp/default.aspx

I strongly recommend C# for this project. The main reason is because as a employee in the professional programming industy (I currently am an active employee in a development contracting business), I see more web based projects coming through than anything and every single one of them are based on the .net platform. I have seen zero of this in college thus far. It is a little disappointing knowing most students are going into the industry with no prior knowledge of anything except for what they learn on their own. This set asside, C# is a great language and would make our lives much easier to work with as a ton of stuff is already done. C# combined with asp.net is also more secure than php.

Tools


Visual Studio 2005 http://msdn2.microsoft.com/en-us/vstudio/default.aspx

Most people are anti-microsoft but I have to say it is the best IDE created. This is a personal opinion but it does so much for the programmer and saves so much time. Time is always a plus in class and the industry. You may be thinking how can we use Visual Studio as it is not free and open source. Every CS student has access to MSDNAA and I think we should take advantage of it. It provides the students with most of Microsofts products free of charge. This includes Visual Studio 2005 professional.

Technologies

Online Tutorials About Introductory Computer Science

http://www.laynetworks.com/assembly%20tutorials.htm


This site has tutorials based on assembly language and the C programming language. 

 

Information Problem-Solving With Technology

http://www.big6.com/showcategory.php?cid=6


This site has information on how to integrate technology tools in solving problems. 


Code Generation Network

http://www.codegeneration.net/tiki-index.php?page=ToolLibrary


This site provides pointers as to which tools to use when you are building a specific piece of software. 

It recommends tools that can be of some use when programming in Perl, Python, Ruby, Java, and C#. 

However it does not mention much on the tools for C or C++ since they are platform specific. 


Application Development Trends

http://www.adtmag.com/article.aspx?id=7850&page=


This site talks about 40 tools that incorporate at least one of the major aspects of UML-based modeling. 


The Code Project

http://www.codeproject.com/csharp/codegenstool.asp


This site contains Code Generation Tools Complementing Generics. 


On-line Tutoring and Training:

http://www.cs.usask.ca/resources/tutorials/csconcepts/index.html
A web-based compendium of Computer Science Tutorials and Applets created by students taking CMPT 371 at the University of Saskatchewan.
http://chortle.ccsu.edu/CS151/cs151java.html
A java-based introduction to Computer Science. Uses web-slides for information, followed by online quizzes and flash cards to test student’s knowledge.
http://courses.cs.vt.edu/~csonline/
Module-based system to assist learning key computer science topics. Lots of information, but no tools implemented to test knowledge.

PHP tutorial
PHP might be a backend for us and as such those that don't know it(me) will have a good resourse for learning and developing code. while it might be a single groups project to do the PHP the class might have to learn it if they need to read the PHP or write small functions/programs.

learning site
this might be a site we model ours off of. the site is a learning site for comparing scores with other students around the country. maybe what ours looks like

Power of the internet for learning
ed.gov site explaining the ability to learn using the internet. might have a few ideas that will better our page to help our target group better able to learn.

FBI site on internet safety
while our site will be tame for learning, we can gain parents support if we can make use of the FBI's information. if our site is a bastion for learning and safe internet then parents and teachers will be more open to allowing there kids look at the site and using it.

Javascript tutorial
along the same lines of the PHP tutorial, javascript might be a language that is used to program part of the page. as such the group or class will have to learn the language and a tutorial or simple guide will be more then good for our page.

Apache
our site will have to be hosted and maintained by ourselves, so our own webserver will serve that use well. apache is one of the best free servers and so it might be good to hop into the bandwagon.

mysql
a database might have to used in our page. mysql is free and a good fast implemention. some of the other databases need a lot more setup and experience time, and so this simple fast version for a class that might not have database experience.

qbasic tutorial
while qbasic isn't a language we will be using, the concept of an easy to learn language might be another subject that we teach the target group. a lot of programmers have made basic there first language because of the simple nature of the language. maybe part of the pages subjects will be like programming tutorial. basic will be a good language for this.


Educational Resources


TopCoder is a great example of an interactive, online computer science resource. The model of presenting a problem, allowing students to enter their code online and give feedback is excellent.


TopCoder is a competitive programming website. Members compete in many different facets of programming, from algorithmic, to full fledged software component design and development. Algorithm matches are by far the most popular events, testing a programmers speed and accuracy to solve story problems with a defined range of inputs. The competitions themselves take place in a Java applet which allows users to code, compile (on the server), and test their program in a protected environment before submitting. The programs are then tested by a series of inputs and expected outputs. Scores are given based upon the time it took to submit the problem and on successful completion of the system tests (failed tests result in 0 points for the problem). Members are also allowed to practice outside of the matches themselves with old problems. To further refine their skill, members can visit the "Educational" section, where there are various tutorials written by other TopCoder members.


acm.uva.es Online Judge
This site has a large repository of problems that have been asked in ACM competitions. The site allows members to submit code to be tested and judged on their servers. As opposed to TopCoder, this site does not impose any restrictions on time limits. Instead, users can submit as many times as they want until their code passes the system tests. Members can also keep track of what problems they've completed. This website (along with TopCoder), may provide good examples of the types of problems we want clients to solve in the more advanced stages of their education.


Syvum Online Education
Syvum is a web-based interactive education system where people can come to learn and quiz themselves on a wide variety of educational topics. From what I have seen, the quizzes are either some form of multiple choice question or a matching type question. After you hit the 'score' button for a particular quiz problem, it will mark if you've got the problem right or not. It also provides an explination of the correct answer regardless of whether you are right or not. Then you have a button to advance to the next question. Instead of guessing to find out the answers, the website lets you look at the problems and the theory behind the answers (including sample input/output for the C++ programming ones). The interface is very simple, with no effort towards making the 'experience' any more interesting than other simple webpages. In fact, the webpage is littered with ads (left side, in the middle of the quiz questions, at the top and bottoms of the pages). It can be a bit overwhelming to new users. Some of the features of the website (like reviewing a question) are only available to "Premier Members". One nice feature about the website is that it can appear in a variety of different languages. That is a nice feature to have, though I am not recommending it for our project. I doubt that many of my fellow classmates speak other languages fluently enough to make a successful translation. We might, however, consider leaving the project open to allow for language modifications in the future.

VITAL Educational Aspects:

URL: Description:
http://learn.serebra.com/wwl/index.cfm Contains Computer Science courses for pay including demos which show the content of each course. User Log in.
https://link.mindleaders.com/e-learn/try.asp?batchmode=&associd=WORLDW005 Contains Computer Science courses for pay and for free. The free ones include a description and inside of them there are excercises, questions, activities, video information, simulations, search options, seems like close match to future VITAL.
http://www.elearnuk.co.uk/courses/index.php?category=16 This webpage has mainly pay lessons on computer science and in fact other areas of studies as well. However it does have a demo that shows how all of the class material is presented. This includes, lesson content, syllabus, info center, notebook and tests.
http://www.festra.com/index.html This site is called Delphi Land. All of them seem to be free. This site contains Lessons, Forums, Tips, Code snips, Downloads and Links. Also the site has an option so that it could be viewed in a different language (Dutch).
http://www.gcflearnfree.org/

Free computer learning site. Contains tutorials, classes. Also has a free membership, where once you sign up you have access to Bulletin Board discussions and access online support center.

http://www.learnasp.com/freebook/learn/ This site is a pretty big library of lessons in various programming languages with source code examples. It also has a few links to different related books and sites.
http://www.microvideo.com/ This is a site to learn mainly microsoft office tools through video. Many different classes for which you can sign up to give it a free try.
http://www.programmingtutorials.com/ The name of the site speaks for itself. Many computer tutorials, including forums.
http://www.profsr.com/ This site has a large amount of free resources for different programming languages. Including Visual Basic, SQL, XML and others.
http://www.testingcenter.com/ This site actually focuses on testing the software. It tutors future testers. Has a sample lesson and course description. This is something that maybe an extra addition to VITAL.
http://www.ivc.illinois.edu/catalog/ProgramSearch.asp This site is an acreditted university that offeres online classes, this doesn't have too much, however it does have a search layout for subjects and courses that are available.

 

VITAL Tools:

http://drupal.org/ This site contains an open sourse platform and content management system for building dynamic websites. This program is capable of creating forums, discussion groups and news aggregation and other. I think this may be useful for creating discussion groups and forums in VITAL.
http://www.blastchat.com/ This is a site that offeres a free chat room client for any website. Here you can also find a list of descriptions for the chat client provided. It looks like you can create multiple chat rooms and have private chat sessions. This may be useful for creating a chating interface in VITAL for students and teachers.
http://www.tutorialized.com/tutorials/Flash/1 Open sourse flash tutorials for creating a dynamic website. Very Useful, that is if you let us use Flash in VITAL :))
http://www.actionscript.org/ Probably the biggest open sourse webpage for Flash/Actionscript online.
http://www.statcounter.com/ This site provides an invisible visitor statistics analysis that is free of payment and Ads. This could be useful for VITAL to have some information for a webbase project on how many students are enrolling out of all that visit or to provide other information at the time or region they are visiting from.
http://www.aceboard.net/ This site is another solution for creating a forum on any site for free. Registration is required.
http://www.sitepoint.com/article/php-mysql-tutorial This site describes on how to build a database on any site using php and mysql. THis could be useful for VITAL to have a database of library station's info.
http://www.databasedev.co.uk/ This is a site dedicated to database solutions using microsoft access. This could be another solution for creating a database. Access databases are more portable in my opinion than SQL or MySQL.
http://msdn2.microsoft.com/en-us/visualc/default.aspx Is a site dedicated to visual C++. It has lots of resources. Since we have pretty much chosen to use C++ as a programming language for VITAL. Then using Visual C++ is a good way for creating user interface.

Here is my initial research list for our VITAL project.

Tools:

-Organization:

http://www.eclipse.org/
Eclipse for use as our IDE.

http://subclipse.tigris.org/
Subclipse, integrates Eclipse with Subversion

http://www-128.ibm.com/developerworks/opensource/library/os-ecl-subversion/
Step by step instructions for setting up Subclipse.

http://www.download.com/HTTrack-Website-Copier/3000-12779_4-10634972.html?tag=pdp_prod
HTTrack Website Copier. Useful in windows for grabbing the entire page of image(of stations) links so they can be viewed locally and much faster.

 


- 3D Modeling

Couldn't find much in the way of existing virtual 3D libraries because there are too many more common meanings for things like "3D library"(a library of code used for writing 3D programs) or "virtual library"(an eBook collection) but here are some programs I found to do 3D work with C++

http://irrlicht.sourceforge.net/
Irrlicht Engine. Open source C++ 3d engine, multiplatform, appears to be much friendlier learning curve for people who haven't done much in the way of programming graphics(like myself).

http://www.ogre3d.org/
Ogre 3D Engine. Object oriented 3D engine. Might be easier for us as programmers to work with. Touts easier integration of code and graphics than most others.

http://g3d-cpp.sourceforge.net/
G3D Engine. Open source C++ 3d engine, multiplatform, capable of impressive graphics(hopefully not too complex)

http://www.genesis3d.com/
Genesis 3D. Real time 3D rendering environment. Seems to have a good tools and community for newcomers.

 

Hosting:

I'm not sure if we need a hosting solution for the organization tools or not. I recall that last year there was some discussion in the ACM as to whether we could get on campus hosting with the necessary permissions to run a CVS. I suspect since we're actually doing it for a course it won't be a problem, but here are some hosting options anyway.

https://opensvn.csie.org/
Subversion hosting


Related Projects:

-Open Source:

http://etutor.sourceforge.net/
e-Tutor. Open source online course tools.

http://www.atutor.ca/
ATutor. Open source web interface Learning Content Management System.

http://www.olat.org/public/index.html
OLAT. Online Learning And Training. This one is nice because it has sections for notifications, notes by the student, and evidence of achievement. I think these are all good ideas to put into our model.

-Closed Source

http://www.flextraining.com/
FlexTraining. e-learning solution. Uses visual interface to set up the courses for the students, completely web based.

http://www.internet4classrooms.com/on-line.htm
Internet4Classrooms. Uses step-by-step instruction to teach people to do tasks on the computer. Completely HTML based, but the quizzes at the end of the sections might be a useful thing to model from in terms of matching and incorrect answer reaction.

http://www.ccsd.edu/bardonia/LearningGames/LibrarySkills/
Library Skill quizzes... not really the same way we want to do them, but an example of what's out there now. Mostly just about the Dewey Decimal system.


I went through some of the websites related to Virtual Library and websites that are related to offering online classes using some animations and other unique ways of teaching. I am not sure whether these websites serves the purpose because I was not able to find many websites related to what we are trying to do. Here are some of the websites I found:



http://vlib.org/


This website is a guide to selected resources across all the main academic areas. It contains resources from different academic areas such as Agriculture, The Arts, Computing and Computer Science, etc.



http://www.csu.edu.au/education/library.html


Education Virtual Library provides online education for different education levels – Primary (K1-6), Secondary (K7-12), Tertiary, Post Graduate.



http://courses.cs.vt.edu/~csonline/

Virginia Tech CS Online Modules in Virginia Tech provides animations to assist learning some key Computer Science topics.




http://cit.ucsf.edu/powerpoint/index.php?step=5


In this webpage, the professor talks about adding different methods in the online classes the ability to listen to the instructor actually give the lecture, as one would in the normal classroom environment.



http://www.virtualclassroom.org/


The Global Virtual Classroom (GVC) project is a collection of free, on-line educational activities and resources. It aims to complement the efforts of governments and education departments around the world to integrate technology into their classrooms and curricula and to link their schools to the information superhighway.



http://www.njit.edu/v2/CCCC/VC/Papers/Teaching.html


This paper describes experiences and results of utilizing Computer Mediated Communications structured to create a Virtual Classroom (VC). Emphasis is placed on guidelines for using the technology successfully by incorporating "collaborative learning" activities.


Papers

Existing Systems

Tools

Software Systems Similar to VITAL

Algebra Shop

When I was very young I had an Apple II with a bunch of games on floppy disks.  One of them was called "Algebra Shop."  The game used a mall metaphor where the user would enter various shops, each of which would require the user to solve mathematical puzzles to service the customers.  If you were too slow, the lines got too long and customers left.  An example of a problem might be "The customer wants 13 doughnuts,  and you have boxes of 5 and 3.  How many boxes of each size do you give them?"  The puzzles taught algebra skills without explicitly stating anything about algebra.

There were several things I liked about this system that could be incorporated into VITAL.

1.)  The mall metaphor made most of the puzzles seem relevant and useful.  There was no question of "When would I ever use this in real life?"  It also allowed more flexibility in the user-interface design while keeping it very simple for kids.

2.)  Racing against the clock made the game more challenging and exciting.  Adding any element of competition, even if it's just competiting against the clock will automatically make things more fun and motivating for kids.

3.)  The puzzles were well designed and ordered so that they started out easy, which is encouraging to newcomers, and then got harder so that by the end the user really had to master the material to be successful.  It will be important to design our system so that it is challenging without being frustrating.

FunSchool.com

This is a website full of free educational games and activities.  The games (including titles such as "Action Fraction" and "Trivia Archer") seem to be standalone Flash or Java-based applets.  There are pdf files available for activities like word searches.  There are also instructions for crafts, science experiments, and other activities.  Activities and games are divided up by grade level.

The site looks very professional but it has some downsides.  It is filled with advertisements.  There is no database for keeping track of user data.  It is not structured very well so it is difficult to navigate.  Some of the games seem to have no educational value whatsoever ("AARGH The Pirate," for example).  Despite this, it is still worth looking at for ideas.

Online Computer Science Training


Project Euler
The user is presented with mathematical problems such as "Calculate the sum of all the primes below one million."  Problems are intended to be solved locally by writing a program.  Answers are then submitted online.  Each competitor has a profile which tracks their progress.  The problems get progressively more challenging, and sometimes force you to do some research to understand the problem statement.  Developing our programming training system similar to this would remove the need for online or embedded compilation tools but it would limit the types of problems and feedback we could give.


Preferred Programming Language

On the survey I selected Java as the language I would prefer to use for this project.  While I don't mind working in C++, I think there are some good reasons for choosing Java.  Programming a multi-platform web-oriented GUI application would probably be much easier in Java than in C++.  Also, the built-in libraries in Java are very extensive and pretty well documented and it would be easier to find resources online.  But mainly, Java is popular and it would be beneficial for us to step out of our comfort zone and get familiar with it, and this would be a great opportunity to do so.

From Google: UNIX interactive tutor