My colleagues asked for articles that we might include in a seminar for all incoming students. Here are my suggestions:
In fact, the speaker at ACT did not claim that software can replace teachers. He freely conceded the limits of the available software. It does not evaluate all the qualities of writing that we think are important. It can be fooled. However, he had also surveyed English teachers. He knew how many student-written papers teachers read and annotate with suggestions for improvement. The number is small. A computer program can give more immediate and frequent feedback to a student than can a human teacher. Even if that feedback is in some ways inferior to the teacher’s guidance, its immediacy and frequency can make it an important complement to the teacher’s guidance.
The speaker at ACT had given the same stack of essays to a computer program and to a group of experienced English teachers. The teachers and the software produced similar scores. The software produced its scores more rapidly and more consistently.
At another meeting of professors, I heard one claim that Duolingo could never substitute for the kind of instruction in foreign languages that professors offer in face-to-face instruction. Again, how do we know if we do not test the proposition? After we have compared the proficiency of students who have completed Spanish 101 and 102 against those who have completed 200 hours of study with DuoLingo, we can comment on the relative strengths of the two ways of learning.
I have several times heard teachers of foreign languages tell me about their sampling of lessons on Rosetta Stone. They had compared their experiences and drawn similar conclusions. I did not doubt the validity of some of their criticisms. However, they also sounded too eager to find evidence that confirmed opinions that they had held before testing the product. New educational media are evolving rapidly. We will need to evaluate new educational media both objectively and repeatedly if we are to understand their potential.
Maybe Rosetta Stone and Duolingo will not rob teachers of their jobs but will instead free them to teach at a higher level than before, to students who are better prepared and more motivated than those whom they have seen in the past?
I have a long-standing interest in continuing education. I continue my own education not only to learn more computer science but also to test the waters and break a path for my students. I bring reports back to my classroom. I tell my students that they will need to continue their education after leaving college. I work hard to familiarize them with the means by which they can do this.
During my career I have completed short (one or a a few days) courses offered at the Argonne National Laboratory, in the National Science Foundation’s Chautauqua Program, and at conferences (e.g., the Association for Computing Machinery’s SIGGRAPH and the Mathematical Association of America’s MathFest). I enrolled in a course at Motorola University. The Motorola Corporation has long been a leader in supporting the continuing education of its employees. I visited both the campus in Schaumburg, Illinois and the campus in Tempe, Arizona. I have purchased self-study courses from my professional society. I have purchased recorded lectures from The Teaching Company (The Great Courses).
In the last few years, I have been studying German with Babbel, DuoLingo, and Rosetta Stone. I have been studying computer science, mathematics, and entrepreneurship with Coursera and Udacity. MOOCs made a big splash six or seven years ago. I am learning more and learning more easily and with more enjoyment than I did with any of the older media.
I now ask students in my courses to enroll in MOOCs. Coursera and Udacity still allow students to audit courses for free. I am not yet requiring students to complete MOOCs. My students see and hear leaders in our field. They gain experience learning with a resource that will be important to them later. They discover what other students of computer science know and can do. They find benchmarks against which to measure their own progress. With these MOOCs, my students can peek inside the classrooms of some of world’s best universities.
Udacity and Coursera invite students to keep trying until they produce nearly perfect work. The companies have designed courses with the expectation that all students who persevere will master the lessons. Their goal is not to determine which students have learned 90% of the lesson, which have mastered 80%, and who has got only 70% of the answers right—their goal is to get everyone to near 100%. Of course, some students will get there more quickly than others, but after all is said and done, who will care whether it took a student 3 months or 6 months to learn how to write programs for the iPhone, if that student can write programs expertly?
I also work to free students from fears of failure and to provide abundant opportunities for correction, revision, and improvement.
Udacity, Coursera, and Duolingo encourage students to answer one another’s questions. They have made it easy for students to collaborate through online fora. Subscribers to Duolingo, for example, post questions and answers about the permissible ordering of words in a sentence, distinctions between nearly synonymous words, and so on. Native speakers often join these discussions. I have found great value in this feature of the language learning program.
Presentations in MOOCs are short. Brief quizzes appear frequently in the lessons. Students learn computer science by building software. The instructors provide numerous examples from which students can learn and borrow.
I also design my courses around projects, encourage teamwork, divide my presentations into small pieces, and couple my presentations to the creative work that my students are doing in the laboratory.
I visited the offices of Udacity last spring. If MOOCs threaten us, it is not because they are delivering instruction through a different medium. It is rather because they are designing courses in a very different way. Teams design their courses. A course is not the work of a single professor working behind a closed door, drawing upon notes composed at home during the summer break. The teams at Udacity include diverse expertise and talents. Some members present the material. Others design projects, quizzes, and rubrics. Teachers do not stand alone in front of a camera. Other teachers are in the room observing, commenting, and directing. Every part of the finished course is visible to the whole world. The company measures, records, and analyzes every response of every student. The company continuously revises every course.
I do not know how MOOCs might work for those who want to study fine arts or humanities. The phrase “online education” covers a lot of ground. I urge my colleagues to avoid letting a bad experience with one kind of online education prejudice them against new kinds.
]]>The attitudes and habits that distinguish the women as members of a profession might not be obvious to all viewers of the movie. Margot Lee Shetterly tells the story more fully than the movie could in her book (“Hidden Figures: The American Dream and the Untold Story of the Black Women Mathematicians Who Helped Win the Space Race”).
Of course, Mary Jackson, Katherine Goble Johnson, and Dorothy Vaughan (the heroines in this story) are honest. However, ethical conduct in professional life means more than choosing not to lie, steal, and cheat.
Professional people take responsibility for their own learning. They continue learning throughout their lives. They help colleagues, especially junior colleagues, advance. They share their enthusiasm and their special knowledge and skills with their communities. They stand by their work. They defend their own work. They do not wait for directions, but exercise initiative. They anticipate problems. They make their product as good as it possibly can be.
The book tells a story that begins during the Second World War. The women calculated the magnitudes of forces that affected airplanes in flight. Row upon row of human calculators entered numbers one at a time into calculators by hand. When jet engines replaced propellers and piston engines, they adapted. When the nation called upon their laboratory to help develop spacecraft, they added to their repertoire of mathematical methods. They foresaw the rapid development of computers and the end of the old ways of generating tables of numbers. The women organized their own courses. They taught themselves and one another. The human computers learned to use electronic computers.
Appreciative of the opportunities that they had found, they volunteered in churches and scout troops and other organizations. They spoke about the rewards that the engineering profession offers. They encouraged young people to invest themselves in work that offers great challenges and great rewards.
They asked “what if?” and developed a solution for what appeared to be an improbable mishap years before the same kind of accident crippled the Apollo 13 spacecraft.
Junior members of a team, when they choose to claim professional status, can defend their work confidently against challenges from higher ranking colleagues. The junior member is the expert in her own domain. In this story, a courageous defense not only demonstrates the integrity of one woman’s work but also reveals errors in the data that she had been given, and so improves the whole team’s output.
The movie’s makers tell the story in compressed time. As the director pointed out in a conversation with the Wall Street Journal, movie-goers are willing to watch a mathematician calculate for 30 seconds, but not for 3 days. Because they work in a visual medium, movie-makers prefer action. People run between buildings. Rockets hurtle through the sky.
On most days, most engineers do not run or fly. Engineers check and re-check, test, validate, and patiently make progress through the accumulation of many small improvements. Discipline, attention to detail, and perseverance also characterize professional conduct.
Read the Software Engineering Code of Ethics to learn more about how to be a responsible and professional person. Although written for software engineers, the principles are relevant in other professions too. What is your calling?
]]>In 1959, Dutch pioneer of computer science Edsger Dijkstra published an algorithm that now routes e-mail and gives directions to drivers in GPS-equipped cars. Many beginning students of computer science study his beautiful algorithm.
When we take to the highway in a car
or send encouraging words through the Internet,
when UPS carries a package far,
there is a choice wherever roads or wires have met.
Our map is points and lines, junctions and roads,
a start, an end, and places to visit in between.
Until we express our methods in codes,
we have but forks beyond which nothing can be seen.
Each piece of our puzzle is a segment.
We must calculate distances to where they meet.
Every piece of measured road can cement
a link in a network that we will all complete.
Computers can add, copy, or compare.
They hold instructions and data in memory.
Programs, like human lives, have junctions where
paths divide and which branch we choose makes our story.
Point and node and vertex label the same.
Edge or arc, either word can name a connection.
At each node remember from where we came.
Sites we visited make a valued collection.
From home to home no distance is reckoned.
Other distances appear impossibly great.
From first stop at home go to the second.
Each step we add to our path is direct and straight.
Our paths will cross and some places we’ll see twice.
Distances that once looked big shrink when we return.
Finding just the one way does not suffice,
a bonus and a surprise in how much we learn.
Legs of our journey combine and connect.
Organize data, then test and set in order.
See a plan at the end when we reflect.
Every step and turn in the maze moved us closer.
In the 1980s, soon after Apple, IBM, and other companies made personal computers practical, fictional heroes in movies like WarGames and Star Trek IV: The Voyage Home discovered the power of smaller computers. In the Star Trek story, the crew of the starship Enterprise traveled back in time to the 1980s. They landed in San Francisco. Scotty, the ship’s chief engineer, needed a computer. He found an early model of the Apple Macintosh. He mistook the mouse for a microphone. Movie-goers laughed when they saw him try to talk to the computer.
We no longer see toggle switches and spinning reels of magnetic tape on the front faces of our computers. Thin liquid crystal displays have replaced hot, bulky cathode ray tubes. Twenty years ago, we copied software from floppy disks. Ten years ago, we purchased software on CD-ROMS. Now we fetch new software from the Internet. The form and appearance of our computers have changed. The physical features of our computers do not define them.
]]>An algorithm is the sequence of arithmetic and logical operations that lead to the solution of a problem. Computer scientists measure the complexity of an algorithm by comparing the number of instructions that a computer executes in running the algorithm to completion with the size of the input given to the algorithm. If the complexity of a problem is very great, then a practical solution might remain out of reach even to the computer scientist who was an algorithm for the solution of the problem.
Here to illustrate the meaning of computational complexity are two problems:
You can find a name in a directory by repeatedly dividing the book in half.
The number of times we must divide a number by two until we reduce it to one is the logarithm base 2 of that number (rounded up). The function grows slowly. You will have to look at no more than 5 pages to find a name in a directory that contains 32 pages. You will have to look at no more than 6 pages in a 64 page directory, 10 pages in a 1000 page directory, 20 pages in a million page directory, and only 30 pages in a billion page book. Imagine even a billion billion trillion pages—checking 100 pages will get you to the page you want. The complexity of this algorithm (called binary search) is low.
You can answer the hiker’s question by computing the weight of every possible combination of items that the hiker might pack and then checking each sum against the 42 pounds that the hiker wants to carry. Although simple to describe, the algorithm has high complexity. The number of possible combinations (that is, the number of subsets of all items) is an exponential function of the number of items. Add one item to the hiker’s collection of gear and you double the number of subsets that you must consider.
(I will fib just a tiny bit in my next calculations because I want to establish a symmetry between this and the previous problem. If you are curious and clever, perhaps you can explain why you would write 31 where I have written 32.)
You must consider 32 combinations if you have 5 items, but 64 combinations if you have 6 items. If you are choosing items from a set of 10 items, you will have to consider 1024 combinations. The number of combinations rises to a million if you have 20 items and to more than a billion if you have 30 items. If the hiker has stored 100 items in his closet, you will have to examine a billion billion trillion possible combinations.
You know that computers are fast. How fast? Can we compute a billion billion trillion sums in the time that God has given us on earth? Industry has increased the speed of computers at a rapid pace and promises continued improvements. How much gain in speed will we need to answer the hiker’s question? Suppose that a genie gave you such a powerful computer. What will you do if a second hiker presents you with 200 pieces of camping gear?
Many problems resemble the hiker’s problem in the following ways:
Stephen Cook and Leonid Levin produced evidence that suggests that solutions to problem’s like the hiker’s problem are forever unattainable. They showed that an efficient solution to one problem in the set would allow an efficient solution to any of the others. Why should this knowledge strengthen our belief that each problem is intrinsically complex?
]]>A programmer can direct a computer to repeat a series of arithmetic operations until some logical condition is satisfied. If the programmer fails to specify the terminating condition correctly, the computer will continue executing the instructions forever.
Will a given program complete its work in finite time?
Before anyone had built a computer, Alan Turing proved the impossibility of writing a program to answer that question. He supposed that a program-checking program could be written and then showed that a logical contradiction followed when he imagined using the program to check itself.
There are, of course, programs that check other programs for misspellings, unbalanced parentheses, and other kinds of errors. However, while it is possible to recognize an infinite loop in some programs, it is not possible to write a program that will reliably tell us whether or not any program that we give it contains an infinite loop.
]]>When the registrar’s office publishes the list of courses that the college offers, the office lists the courses in numerical order within departments that it lists alphabetically. Sorting is the key to efficient searches. Students can find the number of seats available in a course or the number of the classroom in which the class will meet quickly because the registrar has listed the courses in order.
An organization can save money by sorting newsletters by the zip codes of the members to which it wants to send the newsletters. The United States Postal Service charges less for postage when the organization sorts mail before bringing it to the post office.
We will study methods of searching and sorting because the solutions to many of the problems that clients present to software engineers require searching through data and/or sorting data. A large fraction of
Our examination of searching and sorting algorithms will lead us to a deeper understanding of challenges that are common to many kinds of programming problems. Of course, people who have never studied computer science know how to find the smallest element in a collection, find a matching value in a list, and order objects in set from smallest to largest. Searching and sorting are easy. However, specifying the steps taken in a search or sort is hard. Computer scientists can describe the procedures precisely.
Why program a computer to perform a task that people can do by hand? People can sort short lists by hand. Computers become indispensable when the number or length of the lists to be sorted become very large.
We study two algorithms for searching and three algorithms for sorting in our first course. If you continue your study of computer science, you will encounter other searching and sorting algorithms. By showing you several algorithms, we are making the point that you will often have a choice of methods for solving a given problem. A good computer scientist finds the solution to an assigned problem. A better computer scientist recognizes choices, selects the best alternative from among those several methods, and can give reasons for preferring one method over another.
]]>