Archive for January, 2010

CPSC 110; January 21, 2010

Sunday, January 24th, 2010
CPSC 110 class portrait, January 21, 2010

CPSC 110 class portrait, January 21, 2010

For starters, we talked about hardware.  I showed the video Computer Tour from How Stuff Works. Several took notes about the major hardware parts of a computer.  Then I divided the clas into two groups and gave each a PC they could take apart and identify the parts again – CPU, RAM, hard rive, and so on. Students seemed curious.

Hardware lead to software and we went to the lab for a try at using Python. It seemed to go fairly well with everyone getting to the point of entering and testing a program.

We’ll try more of that on Tuesday along with a quiz on chapter 1.  I haven’t told the class yet, that I’ll be out of town on Thursday.

CPSC 401; January 21 2010

Sunday, January 24th, 2010
CPSC 401 class portrait  January 21, 2010

CPSC 401 class portrait January 21, 2010

This was the first Thursday we met. I  gone to Virginia Higher Education Advocacy Day the previous Thursday.

After taking a quiz on material on the sequence from source code to execution and binding times. A few questions on the quiz came from the previous chapters.

Writing and the first writing assignment took center stage after that. The assignment is detailed at
On Tuesday students will bring a list of at least 3 references for the question they will write about as well as an outline of what they will write.

Finally we got to discussing and showing examples of working with ML. We focused on looking at the first two tutorials in  “A Gentle Introduction to ML” by Andrew Cumming of Napier University in Edinburgh.  On Tuesday students will bring the answers to the self assessment section of each of those tutorials. We’ll discuss them nd then try some group work in the lab working on the problems in Chapter 5.  I haven’t told the class yet, but I’ll be away on Thursday for interviews related to my work on the CAS Dean search committee.

Here are a couple of pictures of  the class while they were taking the quiz.

CPSC 401 taking Quiz 1

CPSC 401 taking Quiz 1

CPSC 401 Taking quiz 1

CPSC 401 Taking quiz 1

CPSC 401. January 19, 2010

Wednesday, January 20th, 2010
CPSC401 January 19, 2010

CPSC401 January 19, 2010

The picture at left shows the people in class  on Tuesday, January 19, 2010. Theree others are enrolled. One of those has not been to class once this semester.

HW was due on Tuesday, see for a description.

In class, we went over the topics in Chapter 4 of the text – support provided by a language system going from source through execution and the topic of binding times. Groups of students provided explanations of some terms. Having students explain the key points of each chapter  is the way I prefer to go through this material. The class also did some group work on the exercises for Chapter 4. The answers will be posted in the Course Documents portion of the Blackboard section for the class.

On Thursday we will go over the writing assignment, and then start to talk about using ML.

I had planned to start talking about a writing assignment, but we never got there. So that will be postponed one day.

CPSC 110. January 19, 2010

Wednesday, January 20th, 2010
January 19, 2010 CPSC110

January 19, 2010 CPSC110

The photo on the left was taken at the beginning of class. It looks to me like we’re going to have to come up with some more interesting ways to pose the class.

The assignment due today was completing an online series of questions. Some questions involved arithmetic and some other math concepts. The questions also include some self-assessment tasks regarding use of computer systems and software. The final item is where students can ask me a question. The questions and answers are posted at

Questions from my students, Spring 2010

During class we went over the upcoming assignments, went over an exercise in algorithmic thinking, and discussed some of the hardware in a computer system. See the Web page for that class at for some more details.

I had planed a lab session, but we didn’t get quite that far, so there will be some of that on Thursday.

Questions from my students, Spring 2010

Friday, January 15th, 2010

On the first assignment for CPSC 110, Introduction to Computer Science, I solicit questions from students; anything they would like to ask me. Here are the ones for this semester with my answers.

at your own risk


“How would one program a basic database system?”

A database system typically allows us to store a collection of data, where we have the ability to add, update, retrieve, and delete items from the collection. Furthermore, we often retrieve items based on certain criteria for parts of an item. For example, if the database is a music collection, select all items from the collection where shoegaze.  So we have to program this so that we can represent each item or record in the database, specify the fields that we want to select on (in our example the Pitchfork rating and the genre), and be able to add, update and delete items from the collection. This is not an easy task and is rarely done nowadays without using some software that can construct and maintain the database.  Some people use Microsoft Access for elementary database work, but software written using MySQL and php is very popular.
See the following for more information

“Are we going to be dealing with Math any more complicated than what you’ve given us on this page? I am normally not very good with math and would like to know the general extent of math experience we will need for the course. Thank you.

Computer science generally, and programming specifically require us to be able to work with abstractions usually expressed in symbolic form.  We don’t require algorithmic or mathematical thinking as a prerequisite, but in order to understand the way we will write programs for a computer to execute you will need to be able to think about  solving problems expressed in words, scenarios, or stories using abstractions. So, do you need to know trigonometry or combinatorics? No. But, you need to be open to understanding some problems that require us to access techniques from a variety of sources or domains.

Some other things to read:

” Am I going to have to review algebra or geometry for this class?”

Not necessarily. The problems we try to solve are what some call ‘word problems,’ and we deal with abstractions. Also, we can’t avoid math in most of our endeavors. So, a review might be useful.
Some site to visit:



“How many hours a week will we be in lab?”

It varies. We’ll do some lab work each week, but you’ll have somethings to do outside of class using a computer. The HW in this course takes from 4-10 hours per week, so I’m told.

“Are you a math professor?”

Not now. I’ve been in the CS department here from its beginnings. My academic degrees and almost all of my academic courses were in mathematics. When I started my career as a college educator I taught math, and moved into exclusively dealing with computer science in the late 70s.

“For the two reading assignments, does it matter which one we do first, the fiction or the non-fiction?”

It doesn’t matter. Whichever you would rather do.

“This really isn’t a question, but I just wanted you to know, I’m not very good with computers and they make me slightly nervous, but I really would like to learn how to use them more efficiently.”

Thanks for letting me know. We won’t concentrate on how to use computers too much. Please be sure to let me know when I can be helpful to you. It often turns out that many people have questions about how to do something, but they don’t ask about. I hope you feel comfortable enough to ask.

Take a look at this:

“Who invented the talks”

I don’t really know the answer to that, but I do know a little about the history of TED. Read the text at these two:

“Why is binary a series of 0’s and 1’s?”

When we consult the Oxford English Dictionary (available online at no charge to UMW students and faculty at fro a definition of binary, we see the first definition is “Of, pertaining to, characterized by, or compounded of, two; dual:”. Looking further in the definitions we see Leibnizt used the term binary numbers “binary arithmetic: a method of computation in which the binary scale is used, suggested by Leibnitz. binary scale: the scale of notation whose ratio is 2, in which, therefore, 1 of the ordinary (denary) scale is expressed by 1, 2 by 10, 3 by 11, 4 by 100, etc.” Electronic computers are digital in the sense that information is represented as a sequence of items each of which is either in one of two states. So it is natural in this sense to represent digital information as consisting of a collection of binary pieces. There is also a long tradition of representing the two states with either a 0 or 1.

Take a look at

Questions & Answers

Questions & Answers

“What are the differences between the programing languages used with computers? Are they different because they are easier or harder to use? Do some only create certain programs or work with certain computers?”

There are hundreds of programming languages. Many of these have evolved from older programming languages and others have been created because humans develop a better understanding of how to use computers ot solve problems,and so people develop different ways of providing software that can be reused and is more reliable than what was previously available. Some are easier to use than others,and I think you’ll find Python to be not too hard to use. the hard part is, of course, coming up with a solution to a problem. There are some languages that work only with certain computer systems, and these are generally specific to the hardware or architecture of specific systems.
Take a look at these sites:

” If you could be anyone in the world for a day who would it be?

Being me is just fine.

” Why teach Computer Science?”

CS is pretty interesting. There is always something new and exciting to learn, IMO. Teaching it keeps me involved and learning.

“How long did it take to grow the beard?”

I last shaved in June, 1995.

“How proficient would I be with the computer if I got everything out of this class that I was supposed to?”

This course isn’t so much about being proficient using a computer as it is about solving problems using programs that we develop. The CS department doesn’t offer a course to



develop proficiency using a computer. I think the Business department offers a course like that. Did I misinterpret your question?

” Is math used frequently in programming?”

To my mind there isn’t much difference between mathematics and programming, but I may have a different view of mathematics than you. I received a PhD in mathematics and wrote a thesis in the area of algebra, so I have a strong focus on working with symbols and a keen interest in the way we work with them, as in a mathematical proof. On the other hand, much of what we do in computing involves means of computation. For some other opinions read

“How long have you taught?”

I first taught in college during the 1969-1970 academic year. Yikes, that’s 40 years ago! College teaching is a great career.

“What format do you want our papers to be written in?”

Either in Microsoft Word format (DOC or DOCX), PDF, or RTF.

“What kind of programs will we be writing in class this semester?”

Several different kinds. Ones that deal with numeric computation and some work with strings. We’ll spend a fair amount of time dealing with graphics programs using the library defined in Chapter 4

“Will this course be relatively hard for people who have never really learned python,or programming of any kind,before?”

I don’t think that it will be hard if you follow some  of the points that were in that presentation on the first day – pay attention, be open to learning. be here now, be willing to take  chance, ask for help when you need it,  and  pay attention. Review

“What is your favorite band, or your favorite type of music?”

Favorite Band? That’s easy, A Place to Bury Strangers. Check out the frontman.
Type of Music? No simple answer there. I like several different types. If you could see my playlists you would see they are quite eclectic.

“Do programmers use software like Python to create video games, or is that something else entirely?”

Some use python or similar software. Game programmers often use a library of software that has been developed for some common tasks.  See pygame – for more information about writing games using python.

“What is an example of a program that is impossible to solve?”

One is to write a program that will determine if another program gets stuck in a loop or iteration that never ends. For example this program never ends
def main():
x = 1
while ( x > 0 ):
x = x + 1

It turns out that it is not possible to write a program that can check any program to see if it eventually stops or halts. The problem is that it couldn’t check itself. It is not intuitively or immediately clear that the program can’t check itself. It takes some explaining and development of other concepts. We typically go over those topics in CPSC 326 Theoretical Foundations of Computer Science.  See  the Wikipedia entry for Halting Problem,, for some more details.

“Why did you choose to teach at Mary Washington?”

Two reasons. We had been living in St Peter MN while I was teaching at Gustavus Adolphus College. it is a great place but we were more comfortable living on the East Coast. I had dome some work to start a CS program at Gustavus and the position here was similar in the sense that I would have the opportunity to develop a new program in CS. Sometime you’ll have to ask why I stayed!

“What is the most marketable field in Computer Science?”

There is lots of data on this issue, and there are some slight differences in  the way it is interpreted. Recent data, December 2009, from the Bureau of Labor Statistics,,  puts computer software engineers, applications above Network systems and data communications engineers.

“Where did you go to College?”

I did my undergraduate work a Montclair State College, now Monstclair State University.

CPSC 110. 01/12/2010

Tuesday, January 12th, 2010
CPSC 110, Jan 12 2010

CPSC 110, Jan 12 2010

On  Tuesday I distributed the syllabus and discussed the writing assignments for the course. We also viewed a video and had a brief discussion regarding copyright. All of this is available through links on the web page for January 12, 2002 on the accessible from the CPSC 2110 home page. Be sure to take a look at that Web page so you’ll know about the HW that is due next Tuesday and the following Thursday.


Finally, class is canceled on Thursday, January 14, 2010. I will be attending Higher Education Advocacy Day in Richmond,  VA. See for  more details about that event.

Let me know if you have any questions.

CSPC 401. 01/12/2010

Tuesday, January 12th, 2010 / CC BY-NC 2.0
Programming languages, mostly

On the first day we distributed the syllabus and discussed several programming paradigms with demonstrations of using ml and prolog on All of this is available through links on the web page for January 12, 2002 on the accessible from the CPSC 401 home page.

We won’t have class on Thursday, January 14, 2010. I will be a Higher Education Advocacy Day in Richmond, VA.

For next Tuesday, read Chapters 1 through 4 of the text. You’ll find that the material in Chapters 2 and 3 is very similar to the concepts we discussed in CPSC 336 regarding grammars, syntax, and semantics. Turn in solutions to the following exercises.  Send them to Ackermann by email.

  • Page 24. Exercise 1. h,i,j,k
  • Page 25. Exercise 2 corresponding to h,i,j,k of Exercise 1
  • Page 25. Exercise 3 corresponding to h,i,j,k of Exercise 1
  • Page 39 and 40. Exercise 1
  • Page 40. Exercise 3
  • page 40. Exercise 4.

Finally, please read Chapter 4 for class on Tuesday so that you are prepared to discuss IDEs for two different languages, the terms:

  • virtual machine
  • delayed linking
  • profiling
  • dynamic compilation,

and so that we can go over answers to exercises 2 and 3 of Chapter 4.

As always, send me you comments and questions.

The effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer.