"A computer program does what you tell it to do, not what you want it to do."
- Anonymous
- Anonymous
Content:
Students often approach me at semester's end and ask if they can work with me on some interesting project over the semester break. Each Summer and Winter Break I publish an evolving list of projects that I think would be interesting to students. Often I will work on one or more of them as well. These projects generally fall into one of three categories: fairly simple skill building exercises, portfolio projects that could be discussed during an interview, and Research Projects that explore something new or some new way of thinking about existing work. You will find the latest list of projects below, each with a link to a project statement.Process:
We start the projects with a meeting to talk about what is on the list and to collect a mailing list of all students interested in participating. During these break periods we usually hold a meeting once every two weeks to discuss the status of our work. I will report on my work with code demos and conversation or, occasionally, a slide presentation. Following that students can present their work if they wish and ask questions about the project requirements or discuss their problems designing or implementing a specific project. You are welcome to collaborate with other students if you wish, discussing ideas and implementation approaches. However, the value you get from working on these projects is in direct proportion to the amount of effort and original though you apply to it.Project List:
Number | Project Title | Category |
---|---|---|
UFP0 | C++ Exercises | Build C++ skills |
UFP1 | Directed Graph Class | Build C++ skills |
UFP2 | Graph Visualization | Portfolio Project |
UFP3 | C++ Reflection | Portfolio Project |
UFP4 | Remote Directory Synchronization with WPF and WCF | Build .Net Skills |
UFP5 | C++ Tiny Web Server | Portfolio Project |
UFP6 | Implement Google's Big Table - distributed data structure for big data sets | Portfolio Project |
UFP7 | Stories Web Site - structured to present stories about people and institutions | Portfolio Project |
UFP8 | Explore Boost Libraries | Build C++ skills |
UFP9 | Explore C++11 features | Build C++ skills |
UFP10 | Baysian Networks | Research Project |
UFP11 | Use Ajax Protocols, HTML5, and Tiny Web Server to build a cross-platform GUI | Portfolio Project |
UFP12 | Platform Tools - build platform wrappers used by common code | Portfolio Project |
UFP13 | C++ Serialization and DeSerialization | Build C++ skills |
UFP14 | XPath Component - build XPath processor to navigate XML in C++ | Build C++ skills |
UFP15 | XML DOM - build an XML Document Object Model in C++ | Build C++ skills |
UFP16 | Program Animation - Build annotator to support data flow and control flow animation | Research Project |
UFP17 | Audible Thread Traces - Build audible trace library to support multi-thread debugging | Research Project |
UFP18 | C++ Code Checker - check code for Liskov Substitution errors and more | Build C++ skills |
UFP19 | Cinder - Graphics library in C++ | Portfolio Project |
UFP20 | Explore Node.js | Portfolio Project |
UFP21 | MEAN: MongoDB, Express.js, Angular.js, Node.js | Portfolio Project |
Reference Code:
Below find a table of links to code you may wish to reference or use in your projects. These packages are similar to, or the same as, that I provide for each of the project-based courses I teach. Most of the code is written in C++ and has been used in CSE687 - Object Oriented Design and/or CSE775 - Distributed Objects.Namespace | Package Title | Description | Platform |
---|---|---|---|
PlatformTools | FileSystem | C++ Library of tools for manipulating files and directories | Windows & Linux |
Threading | Threads | C++ Thread Class (not the C++11 thread class) | Windows & Linux |
Threading | Locks | C++ Locking Classes (not the C++11 classes) | Windows & Linux |
Threading | BlockingQueue | C++ Blocking Queue class | Windows & Linux |
XMLTools | XmlReader & XmlWriter | C++ Xml Reader and Writer classes | Windows & Linux |
ParsingTools | C++ Parser | Rule-based Ad Hoc Parser | Windows |
ParsingTools | C# Parser | Rule-based Ad Hoc Parser | Windows |
GraphLib | Graph | C++ graph library | Windows |
CommTools | SocketDemo | C++ Sockets Library & Sender and Reciever classes | Windows |