15-100 Lecture 1 (Monday, May 19, 2008)

Procedural Information

Today was mostly procedural and general discussion. The course policy documentation, &c, is already on the Web:

But the following items are a few musings that aren't necessarily in the other documentation.

Why Are We Here?

We are here to learn to analyze problems, to decompose them, and to represent them in a formal way to a computer. In other words, we are here to learn to program. What we'll be doing this semester is learning how to represent real-world and abstract systems as computer models. The resulting models can be all sorts of things, from computer games to productivity software, to research systems.

Specifically, this semester, we'll learn the basics of object-oriented thinking and programming in the Java environment. The object-oriented paradigm is one technique for analyzing and modeling complex problems. The Java language is a popular, portable, general-purpose programming language. We'll learn all of the basics of Java, including the class and interface constructs, mechanisms for inheritance and compostion, method specification including parameter passing, the use of primitive types, control structures including loops and conditionals, and the use of simple containers including arrays and Vectors or ArrayLists.

Where is Here?

The "intro computer science" curriculum has two tracks: one beginning with 15-100 and one beginning with 15-111. The track beginning with 15-100 is the most straight-forward to explain. Students arrive to 15-100 with no significant prior programming experience. In 15-100 we teach students the basics of object-oriented thinking and programming in Java. Then, in 15-200, students expand these skills by tackling significantly larger problems and building an intuition about the characteristics, including the costs and benefits of various approaches to solving common problems. The goal of 15-200 is for students to be able to "think like a software developer" and gain sufficient mastery of programming to use it as a tool.

The next step for CS majors, and many others, is 15-211. 15-211 is like a deeper, broader, and more formal 15-200. As has happened from the beginning the complexity and size of the problems continues to grow. And, as with 15-200, 15-211 is concerned with the ways of organizing solutions and representing problems, as well as the techniques used to manipulate the system. But, whereas 15-200 was building intuition, 15-211 equips students with more formal tools and tries to achieve a more rigorous level of understanding. Non-CS students may take other subsequent courses, such as 66-272, which is IS 1.

Those who come in with significant prior experience in a non-Java language start in 15-111. 15-111 serves the same role in the curriculum as does 15-100, except that it is also designed to help students transition from a non-Java language, such as C++, to Java. the "finishing line" for 15-111 and 15-200 is exactly the same.

In our experience, it takes about two semesters for "new" students to internalize programming and convert it from usable knowledge to true understanding and fluency. To this end, you might notice that there are two courses, 15-100 and 15-200 before 15-211. And, in the case of those with prior exposure, this exposure counts as one course in addition to 15-111.

We have in the past observed that many of those coming to 15-111 arrive with more than one semester of experience under their belts. For example, many AP computer science courses are full-year. As a result, they are better equipped during their second semester here than are many of the 15-200 students. This is fortunate, because they have the minor inconvenience of learning a new language in 15-111, something which is not part of 15-200.

But, this doesn't help the 15-200 students who are asked to tackle equally complicated problems with less experience. As a result, you might notice that 15-200 has a recitation and 15-111 does not. This enables us to provide extra support to the 15-200 students as they gain the experience that many of the 15-111 students acquired prior to their arrival.

In the end, and consistent with our experience, 15-111 students and 15-200 students achieve the same level of experience, perspective, and preparedness. As a consequence, they take the same exit exam.

You might also note that 15-100 students take an exit exam prepared by the department.

The Most Important Thing

Remember -- we're here to help. Email us or drop by any time we can be of service. To spam all of us at once: 15100-help@cs.