January 2007


I went through the first main chapter (Ch. 2) of my ASP book (ASP.NET Step by Step by Microsoft Press) which had all the basics of creating a virtual directory in IIS, and using Visual Studio to code and setup an HTTP site. There was also a fairly lengthy explanation about all the nuts and bolts of how ASP processes a web request, and what components are available to customize how these are processed.

It was pretty heady stuff, and most of it is still a little over my head, since I’m lacking a lot of context, but I trust that it’ll make more sense as I code more. I did get a basic local HTTP site setup on my laptop, and also made the proverbial “Hello World” app, which in this case is an ASP web page.

I’ve come up against one significant roadblock. My laptop is running Visual Studio 2005 (with Resharper, which is a fairly hefty plugin for VS2005), IIS, an IE browser, and Microsoft Word. Not to mention that I typically have 4-5 other windows open with Excel, Windows Explorer, or other apps. My whole system is noticeably and excruciatingly slow. This is not good for development, but I had wanted to develop from my laptop so I had more mobility options.

I’m going to have to figure something out… probably I will try to continue to run IIS off my laptop, but develop in VS2005 on my desktop, which is more powerful. Supposedly, there’s also a simple built-in server in VS2005 that will allow me to avoid depending on IIS running all the time as well.

I guess I won’t be doing much development at Barnes & Noble, though. :(

I missed an update last week — I was working on the project description which just got posted, but I didn’t finish it, so I didn’t think there was any point in putting the draft up.

I’ve been doing a little bit of everything the past two weeks — some of the details are in the last two posts, but I’ve also upgraded to XP Pro, installed IIS, and started learning ASP.NET. I can still back out and use the LAMP stack, but there’s enough to learn about web application development in general, without having to pick up an unfamiliar language (in PHP). I can basically do the ASP implementation in C#, and if I feel like it, maybe even write a few modules in Visual Basic, since .NET isn’t supposed to know the difference.

There was a time a few years ago when I was deciding whether to buy XP Home or Pro, and Office Standard or Pro. At that time, starving grad student that I was, I settled on the lesser versions of both, thinking… well, when will I ever need the advanced things with Pro? And when will I ever need (or want) to use Access?

Well, I’ve already come to regret the Pro decision, as I couldn’t (legally) install IIS without it. And now my ASP.NET book is indicating that probably the best database to use for a project of this scope is Microsoft Access. Biggest reason being that SQL Server is just too powerful and expensive for a project like this.

On the other hand, I do want to learn SQL Server, and I can use the Express version that comes with Visual Studio 2005 to code my app. Also, I don’t want to make another purchase for Access. I don’t know enough yet on how difficult it would be at some point to port my database modules from SQL Server to Access, assuming that I would want to do that in the future, but supposedly this is what good modular design and division of responsibilities in programming is supposed to ensure. Just something I need to keep in mind as I start development.

Speaking of development, it’s unlikely that I’ll start coding anytime soon, since I want to read up a little on ASP, and I also want to do some sketches of possible screens in the proposed application. Helps to keep perspective on what the end goals is, and I could get some quick feedback from people without investing a lot of time in coding.

So, I’ll be spending the next week reading my ASP book (ASP.NET Step by Step, by George Shepherd) and also making some paper prototypes of some of the main screens for development. I’ll probably spending some time hitting the physics books on how to solve those relative velocity and riverboat problems, because I forgot how to do them!

So what is the project? In a nutshell,

  • Purpose. To design and implement a web-based tool that supplements a learning unit (ie. a single lesson or learning domain), in which the design of the instructional tool is influenced and motivated by cultural considerations.
  • Purpose in plain English. Explore how to adapt web-based teaching/learning to work well in a particular culture.
  • Implementation idea. Chinese culture places a strong emphasis on collectivism, as well as scholastic achievement. My idea is to harness both these forces by designing a system which encourages students to achieve mastery of their learning domain, and to use positive peer influences to stimulate this.
    • A random practice and test problem generator will discourage cheating, and will facilitate individual work. It will also help free up the instructor for more individual help.
    • Placing students into “study groups,” which also must achieve mastery of a unit (and not just the individual) will help motivate students to assist each other and to teach each other, again freeing up the instructor’s time for other tasks.
  • The topic of instruction… I’m going to take an instructional unit out high school/college physics. Specifically, the unit will deal with vectors, and the current plan is to implement vector word problems, such as relative velocity problems and riverboat problems.

The project is lacking a lot of specifics right now, but some of these ideas are still stewing in my mind. I don’t want to overanalyze the problem before jumping in, so the above summary basically proposes a direction in which to go first… it’s not necessarily where I will actually arrive at the end of the project. 

In terms of technology implementation, here is a draft rundown of the major modules in my mind, with sub-items.

  • Drill / testing module - Responsible for generating problems, figuring out the solution, and keeping track of the user’s score.
    • Problem generator
    • Problem solver
    • Storing and reporting scores
  • User module – The standard user authentication and profile capability offered in pretty much every website.
    • Login/authentication
    • Profile/account management
  • Admin/Instructor module – Allows the instructor to set lesson parameters, manage students and study groups, and track the progress of the students and the class
    • Lesson planning 
    • Group/student management
    • Group/student usage and progress reports
  • Student module – Allows the student to track their group and their own status/progress
    • View study group
    • View history reports

I’ve finally settled on the problem domain used for this project, which will be vectors in physics. This is actually a bigger area than I first thought, and although the concept of vectors is relatively straightforward, there is a bit of notation to get acclimated to, as well as a lot of different applications for it.

 After looking through a lot of curriculum materials for teaching vectors, I’ve decided that it’s best to start with sort of a “proof of concept” rather than try to come up with the complete package from the outset.

Here are some potential problem domains dealing with vectors:

  • Vector arithmetic. Add and subtract vectors. Use scalars and apply commutative, associative & distributive laws of vector multiplication.
  • Vector analysis. Find the unit vector, given a vector (what’s known as normalizing the vector). Resolve a vector into its X, Y and Z components. Determine vector equality.
  • Vector word problems. Calculate relative velocity (given a plane at a particular velocity with a head/tailwind, what is the relative velocity of the plane?). “Riverboat” problems (given a boat that needs to get from one side of a river to another, at what direction must the boat go at a particular velocity, in order to reach the other side given a current?).

 I have to say that obviously, the 3rd option seems to most worthwhile. I think the solutions for the first 2 domains will be very straightforward, but the challenge will lie in user input and manipulation issues. For the word problems, there are 2 well-defined problems with non-trivial solutions that put vectors into a realistic and somewhat interesting domain.

I didn’t get to post as early as I had planned on. I’ve been working on a more detailed project plan, which is still in the works. But I’ve also been doing a few other things in parallel.

Technology assessment

My original thought was to use the LAMP stack (Linux, Apache, MySQL and PHP) for the project, but since I have only cursory experience in those technologies, I was considering instead using WISA (Windows, IIS, SQL Server, and ASP.NET). Although I haven’t done any ASP development before, I’ve been developing in C# and in the .NET Framework for awhile now, so I’d be leveraging a little more previous experience.

Turns out, though, that to run IIS, you need Windows XP Pro. I’m running XP Home on my personal computers, so I need to upgrade, just to evaluate ASP. I’ve heard there are ways to enable IIS in XP Home, but they’re a little shady, so I guess I have to try ASP out on a friend’s computer first.

But seriously, I don’t think I’m going to have any major revelations on using PHP vs. ASP. I’ll be more comfortable with the syntax in ASP, at least initially, but in terms of performance/scalability/language support etc. I’m sure I can use either one and survive. The project is not going to have massive resource requirements, so I think I’m pretty safe going either way.

Problem Domain

I’m also going to need to select the curriculum lesson/topic that the tool will implement. I don’t want to do something trivial like grade school arithmetic, where all the inputs and outputs are numbers, or even simply integers. On the other hand, I don’t want to do an area where the symbols are so numerous and/or obscure (like multivariate differential calculus) that figuring out how to allow user input using standard web controls is a project in and of itself.

Right now, I’m seriously considering between two areas from college-level/AP physics: collisions and vectors. Collisions are those problems that seem fun because it looks like you’re learning how to be a better pool player. Vectors (2D and 3D) are those problems where you have a dot and two (or more) arrowed lines pointing out from it, and you have to figure out what they add up to, or what the normal is.

I like these because they’re non-trivial, and because I could conceivably get feedback from college students, who don’t need their parents to sign a waiver consent form. They also work well with graphics, and although I’m definitely not including an automatic graphic generator as a project must-have, it’s a good “nice to have” feature if time allows.

Anyhow, I need to make up my mind, but first I need to refresh on these domains. I haven’t done any physics since I was 17 or 18 years old in high school. Just uh… a few years ago. (ahem)

Apparently it costs $15 to edit the CSS on WordPress. Well, nothing’s completely free, but I had a little design twitch going on tonight. Just as well, though, as I really should get some sleep and start working on more urgent things. Like the project plan.

This marks the first official logged “work day” of my Master’s of Education Plan B project. I’ve been told by several people that my ideas on what I’d like to do are probably beyond the scope of what most Master’s candidates do, so I’d like to start by acknowledging my primary motivations for this project.

  • To finish my Master’s degree. Pretty self-explanatory.
  • To broaden and strengthen my skill set. In my regular day job as a software engineer at Nanopoint Inc., I’m privileged to be able to work on both well-established and emerging technologies. On the other hand, you can only get exposed to so many things when spending most of your time developing one software application. I wanted to use this project to learn and develop in other areas of programming that my day job doesn’t cover (at least yet), particularly web application development and database programming. Also included under this umbrella are emerging web-based tools, such as this blog. For a long time, I’ve avoided creating a blog knowing too well the time sink that it could become for me, but I think it’s important to be aware of how software interaction patterns are evolving on the Internet. In this case, having a more or less bounded topic of conversation (this project and related tidbits) puts an informal ceiling on my verbosity.
  • To make software that can benefit someone other than myself. I could probably finish my Master’s with a much shorter research project and paper by the end of the Spring 2007 semester, but this is the project I would want to do if I wasn’t doing a Master’s program anyway. So why not do what I’m passionate about and have it count towards my program?

Well, now that that’s said and done, here’s where the project stands. I don’t have even a rough schedule yet, but here’s a rough description of the major items on the immediate agenda:

  • Project specs and planning.
  • UI sketches and paper prototyping.
  • Technologies/tools assessment.

Today the important item was to get a blog started as a repository of project updates, and I spent some time evaluating different blogging tools. I almost settled on Blogger, a Google acquisition, but at the last minute heard some good things about WordPress.

Anyhow, it’s not a make-or-break decision, and I don’t imagine it will be too difficult to migrate later if I run into any roadblocks.