[CLUE-Talk] Introduction to Computer Science Course

Kevin Cullis kevincu at orci.com
Mon Feb 19 21:25:33 MST 2001


"Young, Ed" wrote:
> 
> Wow! Inspiring!

My words exactly!!

> 
> You're stepping out of the box, as they say these days, and that is very
> admirable. It is also IMHO, sorely needed in CS cariculae, cariculum,
> whatever. My suggestion may not fit for the particular class in mind, but it
> should either be a class all by itself, or a large part of another course.
> 
> My .02:
> I believe that learning to decompose a problem in to simpler parts and
> defining layers and components of the problem is one of the most important
> skills in any problem solving undertaking. I don't believe that this is
> realy well presented in many cariculae. Once a language is learned, many
> think that jumping in a coding is the thing to do. Learning to first
> understand the problem at hand and the solution's requirements are too often
> disregarded as obvious or implicit.

Absolutely!!!  If they can't define the problem by asking the right
questions, you can't find the right answers.  But having said that, you
need information in order to ask the right questions, that's why you
teach some information first, then get into problem solving.;

> 
> 1. I think excercises in discussing increasingly complex problems and
> identifying what constitutes a solution to that problem is an extremely
> valuable skill, and possibly more important than being able to write an
> entire grammar in one obfuscated "for" loop. For simple problems, hacking
> out something that works if fine. For more complicated problems things have
> to be better understood. Both to reach a solution, and to ensure that the
> implementation is maintainable if things change.

There are ALWAYS 1000 ways to solve a problem, finding the one based on
the requirements is the best one. Besides, the term best is a relative
term.

> 
> 2. Once the problem is well defined and understood, and the solution's
> requirements equaly well defined and understood, then learning how to
> simplify the problem into it's layers and components makes the problem more
> manageable. Defining the layers boundaries, also makes the problem more
> clear and easier to implement. It's also a good team excercise since the
> parts can be distributed amongst a group, and the process can generate a
> lively discussion.
> 
> I wish this sort of thing went on in industry,more.
> 
> As a graduate of a CS engineering cariculum, I learned to program early. It
> was much later that I learned to first understand the problem. (sorry if
> that sounded a little too contrived)
> 
> Good Luck,
> 
> Ed
> 
> > -----Original Message-----
> > From: Roger Frank [SMTP:rfrank at rfrank.net]
> > Sent: Monday, February 19, 2001 4:04 PM
> > To:   clue-talk at clue.denver.co.us
> > Subject:      [CLUE-Talk] Introduction to Computer Science Course
> >
> > I teach in mathematics and computer science in high school.  Next fall, I
> > will be teaching a new one-semester course I'm starting to develop now
> > called Introduction to Computer Science.
> >
> > A quick look around the Internet shows that "Intro to CS" in high school
> > is usually a beginning programming course.  We've had such a course,
> > and we've gotten students who want to learn how to program.  Classes
> > have been small, but students coming out of the old Intro course often
> > went on to Advanced Placement Computer Science and have done well.
> >
> > I do not want the Intro to CS course to be a programming course.  To do
> > so is to teach the same course I took in the 60's, only the language then
> > was Fortran, not C++ or Java.  Computer Science in 2001 has to be
> > much more than learning how to program.

Programming should be a part of a project of computing, which includes
defining problems and the see if computers are the RIGHT tool for the
job. Not everything requires a computer to make things easier. 
Computers can make things more complicated.

> >
> > I do want the course to be an entry level course that any student can
> > take.  Today's students are going to be living in a complicated cybernetic
> > world with difficult issues to face and decisions to be made.  Perhaps
> > this course will be the only computer course some of these students will
> > take.  If so, then teaching them to program in C++ was not the best use
> > of their time with me.  I think the Intro to CS course should have some
> > programming so a student can decide whether he or she wants to
> > continue with more advanced computer courses.  But there needs to be
> > a lot more than just the fundamentals of programming in the syllabus.

Doing a simple spreadsheet (the poor man's program) can be just as much
a problem solver as programming!

> >
> > That's where I'd like your suggestions.  Imagine you are enrolling in your
> > first computer course, or imagine your son or daughter had just signed up
> > for Mr. Frank's Intro to CS course.   What would you hope he would cover
> > in the class?  Remember the goal is not necessarily to have every student
> > go on to become a computer scientist of engineer, but they sure should
> > come
> > out with an understanding of what computers and computer science are
> > all about.
> >
> > To prime the pump, here are some topics that I am considering:
> >
> >  - computer history (modern, so we can see how we got here)

As a comparison of where we are today, go for it!!  Include failures and
maybe why. Some solutions (HW/SW) have been top notch, but have failed
for other reasons (like M$ and marketing)

> >  - computer future (where should/can we go and not go?)

I heard one law professor used a Star Trek series to discuss Future Law,
maybe you could do the same with future concepts

> >  - ethics and legal considerations  (Gnapster and beyond)

BIG issue is ethics!!

> >  - privacy  (safeguarding, identities)

Here's a good basic article:
http://theatlantic.com/issues/2001/03/lester.htm

> >  - cyber-terrorism (national, individuals)
> >  - Artificial Intelligence (including fuzzy logic, genetic algorithms)
> >  - Artificial Life (Boids, development and applications)
> >  - man-machine integration (direct-connect, muscular; optical)
> >  - nanocomputing (airborne, bloodstream)
> >  - hardware ("Let's take the covers off these computers...")
> >  - software (a little programming in Karel, Java, maybe HTML and Python)

What programs do what: RDBS, spreadsheet, graphic manipulations.  Where
and when to use them (while it's easy between graphic stuff and
databases, it's a little more difficult between spreadsheets and
databases). The right tool for the right job.

> >  - careers in computer science

Have a topic on WHY we use computers?  You should also discuss computer
quality!  Software quality!  Hardware quality! How it it achieved! See
SEI's Capability Maturity Model (CMM) stuff.  You should also consider
the BUSINESS of computing, i.e. total cost of ownership of a computer,
etc.  You know Linux, so you can discuss the cost/benefit analysis of
computing, that bigger is not always better or cost effective,
efficiency is also better.

> >
> > I'd appreciate any suggestions of other topics that might fit in this
> > course.
> > This fall, we have filled all sections that were offered, so this course
> > will
> > happen.  I have about 5 months to pull it together and make it what these
> > students deserve it to be.
> >
> > Besides, it won't be too many years before I'll be sitting on a porch in a
> > rocking chair and today's bright-eyed 16-year-olds will be in charge.
> > I want to know I taught them more than just how to program in some
> > then-extinct language.  In 2001, I believe there is more to
> > "Computer Science" than just programming, so what else should
> > be in there?
> >
> > To keep from cluttering the list, reply directly to me rfrank at rfrank.net
> > and I will post a one-time summary of all suggestions.  Many thanks.




More information about the clue-talk mailing list