Showing posts with label college. Show all posts
Showing posts with label college. Show all posts

Tuesday, June 28, 2011

Teaching Programmers ... or Programming Teachers?

So, I've been struggling lately with deducing the best* way to teach computer programming. So far, I'm at a bit of a loss. From my exhaustively intensive Google searching, I have deduced that there is not much out there regarding teaching computer programming/science. It appears that either everyone already knows how to do it, or everyone assumes they know how to do it. Being as I've assumed that I don't know how to teach it, I'm up the proverbial creek without a paddle.

So that leaves me with the task of creating a paddle for this creek (and that is where the analogy ends before you throw me overboard **). I will begin by recounting my current approach to teaching CS and proceed from there:

1. I lead in class 'tutorial' sessions peppered with lectures. I try to keep the lecturing (i.e. directly disseminating information without the students programming) short to focus in on solving a coding problem together.

2. In terms of assessment, my courses have exams (1 if the course is under 3 weeks, 2 if longer) and projects (open ended, PBL style). I have recently started adding in assignments, which are coding problems that are laid out for the students.

3. My class runs for a 5 hour block, Monday to Friday (which is a lot of time to teach).

4. I've started adding in what I call 'Quick Checks' which are questions related to the theory of what we are covering, but unrelated to the problem we are solving (they are meant to help the students pull out the concepts being used to solve the problem).

Now that that is out of the way, here are my observations thus far:

1. It recently dawned on me that my approach of 'live-coding' is really no better than having the students copy copious amounts of notes from the board. I believed that since they were coding (and therefore doing) it was a good approach. However, I have been finding that the students are just copying the code down without applying much thought to the process. So, problem 1 is to find a way to rectify that while still covering problems that are interesting and applicable to what they will face in the job market.

2. The Quick Checks have shown me that the students have difficulty separating the logic of the solution from the scenario of the solution. I think that they see them as the same thing. This is of course highly detrimental to coding, as coding is problem solving which is the act of applying similar thinking to new problems. So problem 2 is finding a way to separate the ingredients from the recipe.

3. The open-ended projects (which are meant as a means to explore the topics covered in course and create items for their portfolio) tend to be highly derivative of the examples I do in class. I feel this reinforces my conclusion drawn in 2 that the students have difficulty separating the logic from the solution.

4. There is still a problem with the terminology we use (i.e. methods, functions, constructors, parameters versus arguments) as well as problems with writing proper syntax. Along the same thread, some students are still having trouble formatting their code neatly (which I am a huge advocate for). This makes it much harder to learn the more challenging problem solving skills as the they are still grappling with the language in which the solution is framed.

5. There is difficulty in remember what we have already completed on the current problem. This is challenging as we often try to reuse code to minimize the amount that needs to be written. However, if you don't recall what has already been done, it is difficult to reuse it or even move forward. I find this also translates into not knowing what the program should be doing when we test it.

In regards to solutions, unfortunately at this point I only have ideas. My biggest worry about implementing changes is my own bias that the changes are effective/ineffective. I need a metric to indicate if the students are actually benefiting. My thinking is something similar to the Physics based Force Concept Inventory, however I cannot find an equivalent one for CS. Since my courses are over so quickly and then we are changing topics/programming language it is difficult to use my exams as a means for assessment (although I have ideas along that thread).

So, at this point dear reader I leave you as puzzled as I am; hopeful that you are intrigued to find this solution (or at least awake). I will leave scribblings on my ideas to future posts.


* best is a fairly loose word to use here, I know ... tsk tsk

** that is the actually end of the analogy, the first was a blatant lie.

Tuesday, May 4, 2010

Tech Tuesday: Create a Google Doc Form

Ok, I've decided to start a Tech Tuesday portion of the blog. One of my professors at Trent told me about her PD she runs at her school on Tuesdays for 1 hour after school educating teachers on the uses of technology. Since I don't have a school, I figured I would start with the blog.

So, today I want to discuss using Google Docs to create a form/quiz/information gather that also has a chart display for the results. This was definitly the show stealer at my recent OAPT presentation. So, here goes.

1. Get a Google Account. Visit Google and click on Sign In in the upper right corner. On the next page choose Create an Account Now. Your new Google Account gives you access to GMail, Google Docs, Google Reader, and Google Calender to name a few.

2. Click on Google Docs in the upper left (may be under More).

3. In Google Docs, click on Create New and select Spreadsheet. A new window will open. Click Form -> Create a Form. Create the form you are interested in (quiz, introduction form, feedback form). For the purposes of these directions, you will need to create questions that have distinct answers (T/F, MC, likert-style).

4. Back in your spreadsheet (which should now have your questions as column headings), click on New Sheet in the bottom left. This new sheet will be used to tally the results from your form. For this example, I am assuming that you created likert-style questions with a 5 point scale (this works best when all the questions have the same style and scale).

5. The values in row 1 should be the questions from your form (or abbreviated versions of them). The questions should start at B1. In the first column (starting in A2) start the scale for your question.


6. Now, we need to add in some formulas to count the responses. For example, in B2 I add a formula that counts all of the responses to the first question that were 1 (this example assumes you renamed the sheet that stores the data from the form as RawData).

=COUNTIF(RawData!B$2:B$103, $A2)

The COUNTIF function will count the data in the range (the first thing in the brackets) only if the value is equal to the second thing in the brackets. The RawData!B$2:B$103 is the range that the function looks over, cells B2 through B103 (this would allow for 102 responses) in the RawData sheet. The $ in front of the number ensures that the numbers do not change when we fill the equation down. The $A2 refers to the 1 placed in that cell, which is the value we want to count.

7. Fill the equation down by clicking the blue square in the corner of the cell highlight box and dragging down. Repeat for the remainder of your questions (by filling across).

8. Now we need to build a chart for our data. Start by selecting all of the data in the new sheet you have just finished making. Select Insert -> Chart to open the chart wizard. Set the Group Data by option to Columns, and ensure that both Use row 1 as labels and Use column A as labels are checked. Click save chart.



9. The chart will appear in the current sheet. Right-click the chart and select Move to own sheet.

10. Now you just need data to be processed into your beautiful chart. Click the Form option in the tool bar and choose Go to live form. This is the page that you can send to the people who you would like to fill out the form. Just copy the web address (the http://spreadsheets.google.com/... bit at the top of your web browser), and send it to your students. They do not need to log in and they do not need a Google Account to fill out the form. In fact anyone who knows the web address can fill out the form.

And that is that, you are now the proud owner of a GoogleDocs hosted spreadsheet creating form that has a nice chart to boot. I have opened the sample form I used for the screen shots, so you can access it through your Google Account. You can access the sample here.

Happy Googling!

Thursday, March 18, 2010

Can Creativity Exist in School?

One of students (thanks Paul) recently sent me the link to the excellent TED video by Sir Ken Robinson as he discusses his view that school kills creativity.



This is a fantastic video and an excellent analysis of creativity and schooling. I have pondered on this video since I was introduced to it in Teacher's College. How do we spark creativity in education? How do we stop the bludgeoning of creativity that happens in school every day.

I just finished my second in-class course at Conestoga. We finished up with informal presentations where each student demonstrated their final project. The project was to create a first-person shooter game (it was a Game Development course). When I laid out the assignment description I stressed the importance of creating a project that suited them. The result was 5 very distinct, very unique final projects. I had one remake of the classic NES Duck Hunt game; one zombie-box shooter; one maze game; one helicopter shooter; and one game for those of us who apparently hate tetrahedrons. All distinct submissions that met the loose criteria I specified. In all of the projects, the students learned what was deemed to be important. But perhaps more importantly, they went beyond the assignment description to include features and functionality that I never dreamed would be added. The other interesting side effect was the ownership that each student showed over their project while they presented it. That and the pride they had in their work. Now, I do work in adult education and adults may be better suited to creating their own ideas on projects. But, I don't feel that they are more apt to this form of learning than our younger learners. Adults may embrace it more, because they have had more experience with self-directed learning because they have had to learn those skills ... outside of school. The interesting thing I noted was that with each new assignment, the submissions became more and more unique; more and more creative.

At the end of the day does it matter than one student forgot to add sound effects because they got caught up building 3D models? Not at all, because they learned something more important than knowledge. They learned how to learn. Because at the end of the day, according to this educational researcher, they probably won't remember what was taught anyway ...

Tuesday, March 16, 2010

Reflections at the End of My First Course

Well, I just finished teaching my first in-class course at Conestoga College . In my first semester I only taught Mixed Learning (think structured self study) so I never physically taught in the classroom (only proctored). Overall, I am very pleased with how the course turned out. But, let's start at the beginning.

I was asked to teach the course the Friday before it started (on Tuesday), and only received the textbook and course outline that Monday. The course was on Adobe InDesign which is desktop publishing software. I remember being in a huge rush to get something thrown together (as I had nothing) for the first night.

I was nervous about teaching at the College. For the last year I had been studying and preparing myself to teach in a High School; now I was teaching adults in Continuing Education. I have taught adults before, but never in a course of this length (usually weekend First Aid courses). I was worried that all the pedagogy I had learned wouldn't apply. Turns out I was wrong.

Because the course was not already prepared for me (as they usually are at the College), I decided to work with the students to decide what we would cover in the latter half of the course (after the midterm). This went very well. We also completely reworked the final two assignments combining them into one project. Finally, we converted the final exam into a presentation, where the students could share their projects and their learning with the class. That just happened a few hours ago and it went splendidly. I was nervous about broaching the idea of presentations to the group, and although there were some reservations, everyone was on board. Now, I am glad I chose to bring it up in class.

I used my class wiki from my mixed learning classes last semester. It ended up being used mainly as a static, teacher updated website. A few additions were made by students in the early weeks, but that did not carry forward. I realize now I made two mistakes with it: I should have spent a bit of time each class explaining how to use it as a wiki; and I should have set time in class for students to contribute to it, thus letting them get used to the idea. I was toying with assigning contributions to the wiki (i.e. giving it marks), but I'm on the fence. I don't like to force people to do something they may not want to, but sometimes we need that to begin using something new. I guess I force them to do assignments and tests, so why not using the wiki. Wikis are more fun anyway!

I would like to incorporate more collaborative learning in my next courses. I was nervous to deviate from a directed learning approach as my past experiences with adult education had indicated that approach worked best. However, based on tonight's success, I may have need to reevaluate my past observations.

I have also been pondering the idea of having my students complete real work for real companies (for free of course). I tried to make my assignments as realistic and useful as possible, but in design, nothing beats working for a real client. I've never done this before, so I really don't know where to begin. I also want to work on not talking so much. I'd love to talk only in 5 minute segments and then only for 4-5 of those. I'm just not sure how to do that with teaching application software where so much of the lesson is working through how to use the software.

I already have some ideas for incorporating Twitter and Wordle into my next classes (on the programming language Python and a course on Database Design). I'll post some of those ideas in a future posting. But for now I must be off to bed. I've got a couple of interviews on Thursday so I need my beauty sleep.