CSCI 239


Sandy Irani, with Alex Edgcomb, Susan Lysecky, and Frank Vahid. Discrete Mathematics, zyBooks, 2016.

This is an online textbook, and you will need to buy a license from the publisher. Follow these instructions:

  1. Sign up (or log in if you already have an account) at, using your email domain
  2. Enter zyBook code CBSJUCSCI239Fall2017
  3. Click Subscribe

You can begin subscribing on 2017/08/14. The cost to subscribe is $48; any applicable returning student discounts will be applied automatically. (This applies if you've used a zyBooks product before.) Your subscription will be valid through 2018/01/04. If you need to buy your subscription through the bookstore, please contact them, and they will order one for you.

Please complete the How to Use zyBooks tutorial before coming to the first class on Tuesday, August 29.

Other Useful Materials

Haskell Resources

We will be using the Haskell programming language extensively in this course. There are many free online resources for the Haskell language, and for this reason, it isn't necessary for you to buy a Haskell book for this course unless you really want to.

The best place to start is at the Haskell Programming Language wiki homepage at There are links there for almost anything you could want to know about Haskell. Be sure to check out the tutorials link under “Learn Haskell” and, if you want to install Haskell on your own computer, follow the Download Haskell link under “Use Haskell.”

The standard Haskell environment GHC is free, and you can get it from the Haskell website. GHC is a feature-rich environment, and it is fully supported by the Haskell community; it is available, ready to install, for Linux, MacOS X (10.6 or higher), and Windows. To run GHC on Linux, you type ghci at the command line. You may encounter references to hugs (an older Haskell environment) in some of the tutorials and other resources, but as far as I can tell, any command that works in hugs works the same way in GHC. Both programs are installed on the CSB|SJU Linux computers.

There are a whole bunch of tutorials available for Haskell, but unfortunately, most of them are designed for people who are already experienced programmers. I recommend you start with Learn You a Haskell for Great Good! by Miran Lipovača. If you like it, the author encourages you to buy a print and/or e-book copy. The other tutorial you may find especially helpful is the Haskell Tutorial for C Programmers by Eric Etheridge, although most of it may not make much sense until you begin to get the hang of Haskell. If you try other tutorials, let me know what you think of them, positive or negative.

Resources for Vectors and Matrices

The following links go to web pages with basic information about vectors, matrices, and their operations: