Purpose:
These projects are intended to:
- Explore cross-platform development, supporting systems that use more than one plaform to carry out their activities. We will focus mostly on combinations of Windows and Linux platforms.
- Learn new technologies that you probably have not been exposed to in your program of study. You will be given some initial references but will be expected to do independent work to develop a working knowledge of the specific technology you've chosen.
- Develop a portfolio project that will interest interviewers and give you the opportunity to showcase your skills and interests.
You will pick one of the Projects listed below to implement, either individually, or with one or two other students, and will make three presentations for your project:
-
Technology Overview:
Discuss your project goals and the technology/platform and frameworks you will be using in a tutorial manner. The idea is that you will explain to the rest of the class how your selected technology works and how you will use it to implement some interesting and useful functionality. -
Probing Examples:
You will present a series of code demonstrations that illustrate what you have learned about your choosen technolgy/platform. These should help the class understand how the technology works and should also move you toward the implementation of your Final Project. -
Final Project Presentation:
Here you quicly summarize the main points of your first two presentations and then describe in detail the design and implementation of your project along with demonstrations of what it can do.
Project List for Spring 2017:
Note: Students are encouraged to make modifications to these project descriptions to suit their own tastes and interests. Treat them as "straw-men" that get you started. If you do make changes, please briefly discuss the changes with me. I will approve anything that meets the stated purpose at the top of this page, and that is interesting and has adequate content.
I also encourage you to layout interesting goals for your project, even if you are not sure that you can implement all of them. You won't be penalized for reaching high and not attaining all of your goals. You will be penalized for laying out very modest goals and not achieving those.
Final Project #1
-
C++ Testharness using Process Pool (CppTH)
The idea:
This project is similar in function to SMA's Project #4, Fall 2016, but it is implemented in C++, using a process pool to enable execution of libraries in isolation, instead of using C# and .Net AppDomains. It will still support high performance execution, but also enables testing of libraries from different technologies, e.g., C++, C#, and Java.The goal of this project is to support testing of more than one type of code. It does this by defining a base process class that supports process creation and communication with the main TestHarness process. Derived classes are defined to support a particular type of code execution, e.g., managed C# or Java code, or native C and C++ code.
This project will use C++ sockets to build a message-passing communication system, and C++ code to develop the TestHarness, Process class for loading and executing C and C++ library code, and a demonstration client.
The process class for testing C# code will be written in C++, but is intended to support starting and communicating with a process written in C# that loads C# libraries, and may use a C++\CLI wrapper to communicate with the Testharness.
The process class for testing Java code will be written in C++, but is intended to support starting and communicating with a process written in Java, that loads Java libraries and will use Java sockets to communicate with the Testharness.
Top
References:
JavaScript:
JavaScript Syntax - Wikipedia
List of JavaScript Libraries - Wikipedia
JavaScript Frameworks - Wikipedia
Top JavaScript MVC Frameworks
ToDo List Application written different frameworks
Xamarin:
Go Programming Language:
Node.js:
Cloud Computing:
Footnotes:
- This will be discussed in class.
- Ultimate++, CodeBlocks, wxWidgets, Qt, GTK+, ...
- That might be a large touch screen monitor, large screen TV, or in the future, wall size displays.
- Another alternative would be to use C++/CLI and WCF for the rendering, since C++/CLI code can interact with native code like the existing Graph class.
- STAs are used in the COM technology and will be discussed in class (this comment does not imply that you have to use COM in this project).
What you need to do and know:
In order to successfully develop project #1 and one of these projects you will need to:- Know how to use the C++11 language and standard libraries.
- Have Visual Studio 2015 installed on your machine.
- Set up a virtual machine and a Linux distribution. I will be using VMware Player and Ubuntu.
- Install g++ version 5.3 or CLang 3.3. We'll discuss this in class.
- Learn the Microsoft COM technology, as discssed in class.