Hexadecimal Comparer

Here’s a program that reads 2 hexadecimal strings from the keyboard, converts them into a decimal number, compares them, and prints out a message based on the result of the comparison.

Download: hex2dec.asm

Bubble Sort

Here’s an implementation of Bubble Sort in MIPS. Enjoy!

Download: bubblesort.asm

Matrix Multiplier

For a class I wrote a simple program that multiplies two matrices and prints the result. This seems to be difficult for most people so I’m sharing my code.

Download: matrix_project.asm

My HTTP Proxy

For our Data Communications and Network Programming course we had to develop an HTTP proxy server in C (yes, C. Not C++. Not C#. C). It was a very difficult project and I want to share my code with the world. The funny thing is: after I finished, the code looked SO simple. It turned out I had such a hard time because I tried to read every bit of the Requests and Responses using string libraries. This works fine for plain hypertext but breaks on any binary data that contains a zero byte (which is most pages on the internet). I eventually realized I had to treat the requests/responses as a series of plain old bytes (and not as a long string) and this solved my problem.

Hopefully this information and my source code will be of use to other students.

DON’T STEAL MY CODE. USE IT FOR REFERENCE ONLY!!

Download: robperson-proxy2

About assesstrack.com

A few years ago Dr. Harry Keeling asked me to write an application that would allow his class to take a quiz on a computer. He wanted to start taking steps towards running a paperless course but he really needed an easier way to generate reports about student performance. These reports were necessary because our department was up for re-accreditation and the accreditation board (ABET) required some pretty detailed documentation. I came up with a few ideas and got to work on a few prototypes.

assesstrack-home-page

The new Assesstrack homepage

The first prototypes were desktop applications. I threw some labels and textboxes and radio buttons onto a form to mimic a paper quiz and installed the application on all of the machines in the computer lab. The students would answer the questions and click save and a file would be saved to the hard drive. We would later retrieve the files and then score the answers. This was a great way to eliminate paper but didn’t make report generating any easier. Eventually we decided that I had to make a web application. The rest — as they say –  is history.

cms-home-page

The Old CMS homepage

I did some research and found an article describing a technique for transforming an XML document into an ASP.NET page. Armed with this idea, I came up with a schema for describing an assessment and created a content management system that allowed Dr. Keeling to create assessments and have students submit their answers online. This prototype ended up being used by hundreds of students. Dr. Keeling constantly came up with new ideas for features and I kept adding them on top of the existing spaghetti code and eventually the code became unmaintainable. So, after two years of experimentation with the “Course Management System”, we went back to the drawing board and started  designing a new application.

After nearly a year of planning and developing, we unleashed my newest creation on the Fall 2010 Computer Science I class. Because it is so amazing, I decided to give my product a name. It had to be something better than “Course Management System”. It had to capture the essence of what my product was about: tracking assessment data. After a while I thought of “AssessTrack” and ran with it.

So now our students can go to http://assesstrack.com and submit their assignments, take quizzes, take exams and get detailed reports about how well they are doing in the class and see what areas they are struggling in. The teaching assistants can log in and grade the students work on line. For most questions the system will automatically grade things for them.

The professor can log in and create assessments, manage accounts, send messages and emails. Most importantly, he can view very, very detailed reports about the individual students’ performance and about how the class performs as a whole. He can quickly see what areas the students are struggling in and adjust his teaching to strengthen their understanding. This is a very powerful ability to have and hopefully it will benefit teachers and students everywhere in the future.

Terrain Analysis App updated again!

Here’s a short and sweet update:

Changes:

  • Zoom range changed to [25%...200%]
  • Selecting a subset of the map (click and drag to draw a rectangle around the area to analyze) now triggers a full re-analysis of that subset.
    (ie: mean and std dev are recalculated, new topography lines are drawn)
  • Selected area remains outlined even after clicking shade all (previously, shade all would draw over the selection rectangle)
  • Rectangle is drawn while dragging (previously you couldn’t see the selection rectangle until you released the mouse button)

Download executable

New Terrain App

Changes

  • Simplified view now shows group outlines which resemble topography lines
  • Algorithm has been enhanced to deal with small peaks
  • You can now zoom in/out (next to load map button)

gridfloat2bitmap

Five Books Every C++ Developer Should Own

Even with the internet, I still occasionally find a need to browse my bookshelf for inspiration, and I know I’m not the only one. I did some thinking and came up with a list of books that just about every C++ developer should own. Beginners will find this list particularly helpful. Since the titles are pretty self-explanatory, I’ll be keeping this post short and sweet with simple links to details on Amazon.

Keep in mind that these are all books that I own and that my collection is far from complete. If there’s a book you think should be on the list let me know in the comments!

  1. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)

    This book provides a list of incredibly useful tips that you can read in any order you like and apply to your own code. It’s great as a reference or when read cover-to-cover.

  2. The C++ Programming Language: Special Edition

    This is the ultimate C++ reference manual. It’s written by the man that created C++. ‘Nuff said. (Special Note: This book saved my bacon at a few ACM programming competitions)

  3. Code Complete: A Practical Handbook of Software Construction

    This book isn’t specifically about C++ but contains more general wisdom that every programmer should know about.

  4. Herb Schildt’s C++ Programming Cookbook

    This is a very useful reference book that contains snippets with solutions to common programming tasks. (This book also helped me during a programming competition!)

  5. Beginning C++ Through Game Programming, Second Edition

    I’ve got to include one “Tech Yourself C++” book and, in my opinion, any book will do. I prefer books like these though as they are great supplements to standard textbooks and are more likely to keep new students interested in learning. I taught myself C++ by writing 2D console games and think everyone else should too! :p

New Terrain Analysis Feature (and bug fixes)

I’ve added a new UI feature to my Terrain Analysis application. What I’ve added is a list of all the elevated areas in the map. Each entry in the list displays the groups total area, its position in the map and it’s average elevation. Double clicking on a list item will highlight that group on the map (use the checkboxes under Group Data to change the way groups are highlighted).

Remember that previously the only way to analyze a specific group was to click the next/previous buttons to iterate through all of the groups. Now you have all the information you want at a glance and can instantly focus on any single group.

Click here to download.

Gridfloat2Bitmap 3 screenshot

Gridfloat2Bitmap 3 screenshot

Terrain Analysis UI improvements

I’ve uploaded a new version of the Terrain Analysis Application. The changes are listed below.

Changes

  • An area selection feature has been added. You can now click and drag to select an area to analyze. The area you selected will be outlined and the algorithm will only be run on that area. Clicking ‘Shade All’ will show the groups that are elevated in that area.

Not Yet Implemented

  • Point Scoring is not yet implemented. It is only half finished so I left it out of this build.
  • Changes to histogram algorithm. The histogram algorithm used to simplify the map needs a few tweaks to make it produce a properly simplified map.

Download

Download gridfloat2bitmap.exe.

<- Older Posts |