T B H P N

Summer Projects

image file not found
"A computer program does what you tell it to do, not what you want it to do."
- Anonymous
Submitted Summer Project Code

Note:

I'm switching over to Visual Studio 2017. That means that you won't be able to build any of my new demos or revisions unless you also install VS2017. That's because the solutions and projects are not compatible. If you don't switch, you can still use the code, but must remove the solutions and projects and rebuild using your version of Visual Studio.

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, some 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.

June 15 meeting agenda

Tutorial Materials

Custom HTML Controls
"Tiny" C++ HTTP Client and Server, class diagram, structure chart
HTTP made really easy - J. Marshall
REST tutorial
WPF and WCF Summaries
Repository/Cpp
Repository/CSharp
CppCodeRepository

Project List:

Some of the projects, listed below, have links to project statements, some do not. These are just starter ideas. You are encouraged to make these projects your own, creating or modifying statements to suit your own purposes. I'll be pleased to discuss them at greater length - just ask in a Summer Project meeting or on Piazza.com

Here are some worthy goals for this summer work:
  1. Polish a project to discuss in interviews.
  2. Learn some new technology.
  3. Strengthen what you've already learned this year.
Number Project Title Category
Project #1 C++ Exercises Build C++ skills
Project #2 Improve the design and implementation of one of your class Projects. The intent is to develop a professional quality product that you will be proud to discuss during an interview. Portfolio Project
Project #3 Build a Pluggable Repository in C# or C++, where policies are pluggable components. Example policies are: ownership, storage management, checkin and checkout, versioning, ... Portfolio Project
Project #4 Explore the Go Rust Programming language by rebuilding Project #4 in Go Rust. Build your software development sophistication
Project #5 Graph Visualization - Demo Portfolio Project
Project #6 C++ Reflection Portfolio Project
Project #7 Remote Directory Synchronization with WPF and WCF Build .Net Skills
Project #8 C++ Tiny HTTP Web Server and HTTP Client Portfolio Project
Project #9 Use Ajax Protocols, HTML5, and Tiny Web Server to build a cross-platform GUI Portfolio Project
Project #10 Platform Tools - build platform wrappers used by common code, e.g., Process handler, Convert Sockets to Linux, Shared memory handler, ... Portfolio Project
Project #11 Process management class(es) for Windows and Linux Portfolio Project
Project #12 Add buffered string reading to Socket::getString() Sharpen C++ skills
Project #13 C++ Serialization and DeSerialization Build C++ skills
Project #14 Program Animation - Build annotator to support data flow and control flow animation Research Project
Project #15 Audible Thread Traces - Build audible trace library to support multi-thread debugging Research Project
Project #16 C++ Code Checker - check code for Liskov Substitution errors and more Build C++ skills
Project #17 Draw UML Class Diagram from source code using type analysis Portfolio Project
Project #18 Generate source code from UML Class Diagram persisted to XML Portfolio Project
Project #19 Build an object model in JavaScript for HTML5 canvas drawings, e.g., like Silverlight Research and Portfolio Project
Project #20 Stories Web Site - structured to present stories about people and institutions Portfolio Project
Project #21 Explore Javascript Frameworka like Node.js, Express.js, and Angular.js Expand your background knowledge
Project #22 Learn a functional programming language like Haskell, Rust, Erlang, or Scala Expand your background knowledge
Project #23 Baysian Networks Research Project
Project #24 Build personal website using MEAN Stack - MongoDb, Express.js, Angular.js, Node.js Portfolio Project
Project #26 Build Test Harness server using a Process pool so each test runs in its own process, without creating an excessive number of processes. Could use socket-based message passing for IPC. Another alternative would use shared memory and placement new to share a BlockingQueue. Portfolio Project
Project #27 Create web apps using HTML and CSS with Mavo Explore new stuff
Project #28 Explore web-related open source projects like D3 - Data Visualization, node.js - http dispatching with JavaScript, Grunt - JavaScript utilities, jQuery - cross browser JavaScript library, JSHint - Javascript static analyzer Explore new stuff
Project #29 Build web app using Angular2.js in ASP.Net MVC & Web API Portfolio project
Project #29 Integrate node.js with a C++ application. Here's some help. Portfolio projet,
try new stuff
Project #30 Try out the Silicon C++ Web Framework for building Web APIs in C++ Portfolio project,
try new stuff
Project #31 Build a Graph class in either C++ or C# (or both) to strengthen your skills with those languages. Note that you are asked to build the Graph Class using a map or dictionary, which will prevent you from using the graph classes linked below. You may, however, look at them for ideas. Improve your development skills
Other Projects This links to the CSE775 Distributed Objects Final Projects for Spring 2018. Improve your development skills

Project-related links:

Topic Link
C++ References & Tutorials cppreference.com, isocpp.org
cplusplus.com, cprogramming.com, tutorialspoint.com, learncpp.com
C++ Knowledge Base
HTTP Protocol HTTP Made Really Easy - J.Marshall
Network Programming Beej's Guide using internet sockets, Network Programming with .Net, CMU.edu pdf
Containers Getting started with Containers - part1 of 8, Getting Started with Docker for Windows, Getting started with Windows Containers
MEAN Stack thinkster.io video and text tutorials, brandoncode tutorial, Web App and RESTful API Server, fullstacktutorials, ToDo App, meanjs.org
Machine Learning Introductiory Primer, ML - Wikipedia, ML - Andrew Ng, Standford.edu
Node.js JavaScript running in Browser, docx
JavaScript running in Hosted Node.js, docx

Nodejs.org about page, W3Schools node.js tutorial, tutorialspoint node.js tutorial
JavaScript

Javascript

ECMAScript6

Haskell Haskell.org, Real World Haskell, on-line ebook
Rust Rust - Wikipedia, rust-lang.org, Rust, the Book
Python python.org

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 - Windows C++ Library of tools for manipulating files and directories Windows & Linux
Threading BlockingQueue C++ Blocking Queue class Windows & Linux
Thread Pool Tasks and ThreadPool C++ Task class using Threadpool Windows & Linux
XMLTools XmlDocument C++ XML Document class Windows & Linux?
XMLTools XmlReader & XmlWriter C++ Xml Reader and Writer classes Windows & Linux
NoSQL dbs C++ NoSqlDb Instructor's Solution - meets requirements but could use some polishing Windows
ParsingTools C++ Parser embedded in Code Analyzer Rule-based Ad Hoc Parser Windows
ParsingTools C# Parser Rule-based Ad Hoc Parser Windows
GraphLib C++ Graph C++ graph library Windows
GraphLib C# Graph C# graph library Windows
CommTools Sockets 5.1 C++ Sockets Library & Sender and Reciever classes Windows

My Summer Projects:

Project Description For
Pluggable Repository Repository that can be tailored, via plug-ins, to match the working style of a Software Development group. CSE681-OnLine sample project
Repository Code Updates Minor additions, modifications, and bug-fixes
  • Add threadpool to SocketListener
  • Close file handles in FileSystem - Windows and Linux
  • Clean up parser action code, convert ASTNode struct to use CppProperties
Repository code for CSE687 - OOD and CSE681 - SMA
CSE687-OnLine Tailor CSE687 - OOD material for Online Course (quarter system) Computer Engineering OnLine Program
Tiny HTTP client and Server Build socket-based HTTP classes for use in CSE687 - OOD projects CSE687 next Spring
Course Repository Configure Repository directories to hold header files, static libraries, and dynamic-link libraries, as well as all the source code. Make student access simpler

campus at night