CSD101: Introduction to Computing and Programming

Links, Resources

Programming environments

There are three ways you can program:
a) You can use an integrated development environment (IDE) where you can create, edit, compile and debug your programs in a single environment (that is by running a single program)
b) you can use a separate editor to write and edit your programs and use the command line interface (CLI) to compile and run your programs and a separate debugger to debug your programs
c) Use a web based programming environment.

For this edition (2021) of the course we will use method c) above - the web based environment CS50IDE (https://ide.cs50.io/). This gives a common uniform environment to all students in the class. For lab assignments and lab tests you should use the same environment.

To use the CS50 IDE you have to login using a github account. So, please sign up for github, if you don't have a github account.

For practice or otherwise if you use method a) then you are relatively independent of the operating system (OS) of your computer (e.g. Linux, Windows, MaCOS) provided the IDE runs on your chosen OS. If you are using method b) you will be using the command line interface of your OS to compile and run your program (the C compiler will be the compiler provided by your OS) and a separate debugger to debug your programs. You can use any editor of your choice to write and edit programs.

Below are links to some widely used IDEs and Editors.

To install one on your computer. Visit the site at the link and follow installation instructions for your OS. The site will also provide documentation and other help in the form of wikis/ forums/ etc.

  • Visual Studio Code. IDE (using packages) and code editor, open source, runs on Linux, Windows and macOS.
  • Code::Blocks. IDE, open source, runs on Linux, Windows and macCOS.
  • Eclipse. IDE, open source, runs on Linux, Windows, macOS. Built using Java so cross platform.
  • Apache Netbeans. IDE, open source, runs on Linux, Windows, macOS. Built using Java so cross platform.
  • Atom. Code editor, open source, runs on Linux, Windows, macOS. Can become an IDE with packages.
  • Vim/GVim. Powerful general purpose editor, open source, runs on Linux, Windows, macOS. Can work as a partial IDE with plugins.
  • EMACS. Another extensible powerful general purpose editor, open source, runs on Linux, Windows, macOS. Can work as a partial IDE using programmable extensions.
  • Any simple text editor on your OS can also be used for creating and editing your programs. Most common ones recognize and allow colour coded formatting for C programs.

The C language, programming

The C language was orginally invented by Kernighan and Ritchie and used to write the Unix operating system. Over the years it has evolved and undergone a standardization process. Different compilers implement the latest standard to differing degrees so it is possible that a program that compiles and runs on one system does not do so on another. For the most part this happens very rarely so it should not be a problem in this course. C was first standardized as ANSI C and then subsequently as C90, C99, C11 and most recently C18. For some details and further links see the Wikipedia page.

The following are some youtube links for beginning and intermediate C programming that you may find useful.

Linux

Linux is an open source and free operating system in a large variety of flavours (distributions). See this site to get a sense of the large number of Linux distributions. One widely used distribution is Ubuntu (based on the Debian distribution). The CLI in the CS50 IDE is for the Ubuntu 20.04 version.

The command line interface (also called the SHELL) comes in various flavours. One commonly used one is the BASH/ bash shell.Here is an introduction to the bash shell. Each shell comes with its own programming language/system that can be used to write programs called shell scripts. Here is a short introduction to linux commands. There is more information in the online repository for this course.

Programming contests, coding sites

The list below is a small selection from a large number of coding contest sites.
Back to top