Email: | |
Web page:   | http://www.cs.tufts.edu/~msheldon/ |
Phone: | 617-627-2491 |
Fax: | 617-627-2227 |
CS 11 and CS 15 currently both use C++. CS 11 covers
problem solving and basic programming skills from
scratch — no experience necessary. You'll learn about how to
break a problem down and solve it in a well-structured program, which
means encoding your solution in a way that a computer can execute.
This means that you'll learn something about how computers work, too.
The programming tools you'll learn to apply to problems include
values, variables, expressions, conditional execution (if
statements), functions, recursion, loops, arrays, structs, and
classes. All of these tools are pretty common in introductory courses
students might take elsewhere (though recursion is often skipped).
Unlike most courses students have elsewhere, students also learn about computer memory organization, pointers, and manual allocation and deallocation of memory (array lists, sometimes called vectors or dynamic arrays, and linked lists). All of this is done on our department computers, which run the GNU/Linux operating system.
CS 11 also includes two or three substantial programming projects, the last of which requires the student to manage memory in an application with 2 – 3 classes
CS 15 starts from there. My alternative name for CS 15 is
“Data abstractions every working programmer must know: their
applications, interfaces, implementations, and costs.” It covers
a variety of data abstractions that can be employed in many practical
applications, their implementations and performance tradeoffs.
Students solve larger problems and write larger programs, all of which
require multiple source files. Students also learn more about memory
management, use recursion a lot more, employ the
Unix make
utility to build their programs, and
do unit testing. CS 15 also includes two (or three)
substantial programming projects that are more complex than those in
CS 11 and that involve making choices about data structures and
their implementations.
Students with a strong programming background would be bored in CS 11 for the first two thirds of the course. In the final month or so of the term, you work on larger projects (and use pointers), so most students with a high school background are challenged by the end of the course.
If you skip CS 11, then, if you don't know about pointers, memory allocation/deallocation, and Unix, then you'll have to learn those skills in CS 15. It's doable, and we support students during the transition, but it will be substantially more work for the first 3 – 5 weeks while you catch up on those topics.
If you have a busy schedule and are settling in to college, then it might make sense to take the easier course, reinforce the skills you have and acquire a few more — take CS 11 (but don't complain that you already know the material for the first part of the course).
If you are up for a challenge and are willing to do extra work, or if you already know about pointers, then take CS 15.
Finally, as a rough guide:
new
, and delete
, then
you'll probably be ok in CS 15. If your background is in C, and you
are comfortable with pointers, then you'll have to work to come up to
speed on data abstraction with classes, but CS 15 should be in
reach.
ArrayList
for some type in C++, then you'll be all
set for Homework 1!)
If you are considering skipping CS 11, I recommend that you look at CS 11 review material on structs, memory, pointers, classes, and data abstraction. There, you'll find notes, lecture videos, and practice exercises on some of the later CS 11 topics. If you are ok with that material, that is a good sign that you might be ready for CS 15.
You may choose to give CS 15 a try for a week and then switch to CS 11 if there is space. Going the other way is not recommended: coming in after others are well along in the transition will put you way too far behind.
If you're not in the class, but using staff resources to answer questions and grade your work, then you are competing with people who are paying for the course.
So, my position is, assuming there is room: You are welcome to attend lectures and do the work on your own, but you should not submit work for evaluation. For lab courses, you may join a lab only if there is space in that lab, but you can't displace a registered student. For 11 and 15, there are usually a few labs with small enrollments: See on SIS which ones those are.
Come to class on the first day, and, if there is room and you understand the restrictions above, I'll sign an audit form.
Also, you will need an EECS login to participate in class. Please
see the EECS IT help desk folks to get an account. Their offices
are in the very back of the second floor of Halligan, and their
email is staff@eecs.tufts.edu