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
November 8th 2010
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
November 8th 2010
Here’s an implementation of Bubble Sort in MIPS. Enjoy!
Download: bubblesort.asm
November 8th 2010
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
November 8th 2010
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
November 8th 2010
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.
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.
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.
October 5th 2010
Here’s a short and sweet update:
October 1st 2010
August 11th 2010
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!
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.
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)
This book isn’t specifically about C++ but contains more general wisdom that every programmer should know about.
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!)
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
July 9th 2010
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.
April 30th 2010
I’ve uploaded a new version of the Terrain Analysis Application. The changes are listed below.