Knowledge moves downwards along the chain of educational systems. Calculus was once exotic research, studied in the 14th century by a few mathematicians musing about crazy infinitesimal numbers. Later, widespread applications were discovered, and it became a part of university curricula. Finally, in the 20th century, it reached high school curricula. Now, many high schools offer multiple years of calculus, touching on multidimensional ideas. The same transitions have also been true about software development, but it got a later start. It was once the frustrating realm of codebreakers and card punchers, of vacuum tubes and spools of magnetic tape. But to many students in university, and most in high school, it is an exotic discipline. We even wrongly call it "code". Needless to say, many worry about how difficult it is to learn to be a software developer.
Still, software development is not hard. It is simply a discipline that we are unfamiliar with. By the time you see these slides, you will have had at least decade of mathematical instruction, a decade of expository writing, and untold years of other academic experience. When a professor gives you a problem set, you have an idea how much of your day it will cost. When a professor asks for a 10 page essay on an obscure irish poet, you'll know if you can meet your friends this weekend. But when a professor asks us to write a program, we have no idea. We don't have those decades of experience that give us a clear notion of difficulty and that reassuring ratio of effort to success. The fear that scares most people away from software development is not the fear of intellectual challenge, it is the fear of the unknown. When grades, careers, and social lives are on the line, why risk it?
Because it's worth it. Because all future jobs will require it. Because people with this skill are well compensated. Because the intellectual challenge is exhilarating. Because it's not really that hard. In this course, we begin with a look at the intial idea of what a program is, and how a the metal part of the computer uses software. These topics are the focus of the first three lectures.
Lectures developed for [CSE2] were developed by Brian Chen, Brian Davison, and Edwin Kay. Lectures may be used for other courses by permission only (Contact Brian Chen).