CIS 199

Frequently Asked Questions

What is a “scripting language”?  Is it the same as a “programming language”?

The two terms are very similar.  A script is a type of program, in that it is a set of instructions that define a series of operations to be performed on a computer.  A script is program that interacts with other applications.  The idea is to write a new program by “wiring together” existing programs rather than starting a whole new program from scratch.  Scripts are also used to automate repetitive tasks, e.g. if you need to download several files from a web site you can write a script that connects to the site and fetches every file of a certain type in a specified directory.

Why Ruby?

Ruby is not only a very useful scripting language, but it is also a full-featured programming language that makes it easy to write fairly large applications.  It is not as efficient as C++ or Fortran or other languages used in scientific applications, but it should be useful for many non-trivial projects.  It has a clean and easy-to-learn syntax that lets programmers focus on the task at hand, rather than trying to remember lots of arcane symbols and what they’re used for.

Why not Perl?

Perl is very widely used, and is pretty much a de facto standard scripting language in the Unix/Linux world.  But it also has a lot of idiosyncrasies and a more difficult syntax that often gets in the way.  I think the best strategy for this course is to learn and explore programming concepts using Ruby, and then students who need to use Perl can easily switch at a later date.

Why not Java? C++? Fortran?

The languages are widely used for big problems, e.g. large scale parallel simulations that run for several days. But there is a lot of “overhead” to deal with when writing programs in these languages, and again I think the best plan is to learn basic programming concepts with a simpler language like Ruby and then let students learn specifics of a more complex language if and when they need them.

What is computational science?

The short answer is “doing science using computers”.  Scientists from a wide variety of disciplines, from molecular biology to astrophysics, use computational approaches to address problems that cannot be solved by purely theoretical or experimental methods alone.  This will not be a course in computational science -- for that see CIS 455/555 -- but the course is intended to help students who want to build up programming skills to help them in computational science projects.

Does this course require a background in science?

Not really.  I plan to create hands-on projects writing scripts that will interact with a wide variety of scientific applications, but students should be able to learn enough to use these programs without knowing too much of the science involved.

What computers will we use?

Ruby runs on a wide variety of computers, and is very easy to install (it comes pre-installed with Mac OS/X).  You can install Ruby on your laptop or home computer, on a computer in your lab, or on a machine at the UO Computer Center.  If you prefer we can set up an account on the CIS department Unix network and you can use the systems in Des 100.

How much time will I spend on this course?

Plan on a minimum of 8-12 hours per week, which accounts for time spent in lectures, reading, and simple weekly projects.  Some projects may be more involved.  An unfortunate aspect of programming is that very often a frustrating bug will take an inordinate amount of time to track down, so it’s possible that some weeks you may spend a few more hours on a project.

Is programming addictive?

Yes.  Not everyone is equally susceptible, and the risk of addiction seems to be proportionate to the amount of time people are exposed in their earliest programming experiences.  If you find that you can use Ruby to complete a project and then put it aside to move on to your next task you are probably not at very much risk.  But if you find you like the intellectual challenge (which is often compared to solving a crossword or logic puzzle) and discover you like spending time to improve and embellish your programs you are exhibiting some of the early symptoms.  You have been warned.