GC Computer Science

Train your mind, create your career.

Apply

Purpose

The idea of the Computer Science minor—and note that we do not offer a major in the subject—is to supplement your major course of study with some ways of thinking and some practical skills that will serve you well, both in that major and in your future career. We don't aim to turn you into a professional software developer, but rather to get you comfortable enough with coding that you can be the "data" person in your team or organization, and to be able to design, customize and maintain websites— for your organization, your colleagues, groups you volunteer with, and for yourself.

You can think of the minor as having three focal points:

Computer Programming, the first focus, is the foundation for the remaining two areas. The art of programming involves learning how to specify practical problems precisely and to restate them as problems for a machine to solve, learning one or more programming languages with which you can communicate procedures to a computer, and developing methods for organizing information and managing complexity. In this minor you will study two widely general-purpose programming languages: R, which widely used in statistics and data analysis, and JavaScript, a language that powers websites but which is becoming increasingly popular in many other domains.

Data Analysis is the art of collecting and organizing data, investigating the data to discover patterns that support decision-making in practical situations, and communicating the results on one's analysis to the people who need to make decisions based upon it. It's closely related to the field of statistics, but involves much less in the way of mathematics and emphasizes the use of the computer to process and manage data that is too large or to messy to be analyzed "by hand." If the data is espcially large then it may be stored in a database, so in the course of our study of Data Analysis we'll learn basic concepts of database design and we'll acquire proficiency in interacting with databases.

The various skills and techniques involved in the production and maintenance of websites make up the discipline of Web Design. We'll focus mostly on "front-end" design", which is concerned with what the user experiences in his or her web browser, but we'll also touch on "back-end" web development&mdashthe complex computations that are done on the remote server to process information that the user provides.

Data Analysis is increasingly communicated on the Internet, so several courses in the minor integrate both Data Analysis and Web Design.

Requirements

The minor requires 18 hours in Computer Science, as follows: There are some exceptions:
  1. ART 323 Web Design is currently taught every semester in the Art Deapartment and is quite similar to CSC 323. Accordingly, we will only offer CSC 323 on the rare occasions when ART 323 is unavailable. You may take ART 323 and expect it to substitute for the CSC 323 requirement.
  2. With approval of the Program Coordinator, some students may be able to do CSC 460, our internship course, and have it substitute for a required course in the minor (most likely CSC 303 or CSC 405).
  3. CSC 470 Special Topic may be offered from time to time, and in rare cases may substitute for a required course in the minor.

More detailed information about all of our courses may be found below.

Course Description

Developing algorithms to solve problems and using the computer as a means to implement algorithms and to automate tasks. The course includes the study of a modern computer language along with the programming paradigms that it represents. Topics include variables, control structures, data structures, objects and reuse of code.

When Offered

Fall and Spring.

More Info

This is your introduction ot the Compute Science minor. You will learn the basics of R, the world's most popular language for statistics and data science. We will emphasize the basic principles of computer programming, but we will also begin to look at some of what the tools R provides in the way of data analysis.

All of our work will be done through an online server that can be accessed on any computer than has a modern web browser and that is connected to the Internet. This means that you don't have to have your own computer in order to succeed in this course: you can simply use one of the many computers on campus. Nevertheless, it is recommended that you have a computer, and a good working laptop will be required for all subsequent Computer science courses.

Course Description

This course includes the study of the computer language and programming topics begun in CSC 115. It also covers tools and resources available in the larger “eco-system” of the language under study, and introduces students to development tools, including version control systems.

When Offered

Spring semesters.

More Info

We'll use R to continue the study begun in CSC 115 study of basic progrmming concepts, and we'll look at some more data anlysis applications.

We'll also get a serious introduction to version control, a practice that helps software developers keep track of changes to complex applications and that allows programmers to collaborate with each other more effectively. We'll learn the version-control language known as git, and we'll put up our first remote software repositories on GitHub.

We will even make our first forays into web design. The present-day R programming environment includes a number of tools that make it easy to build R-based websites and blogs, and to have them hosted for free by great developer services like Netlify. You'll design your first sites in this course, and begin using your personal blog to write about problems in programming or to expound on ideas from courses in your own major.

We'll continue to work on the online server, but you are going to have to learn how to install some software on other computers, so starting with CSC 215 a laptop in good working order will be required for every class in the Computer Science program, except maybe for CSC 303.

Course Description

This course focuses on data analysis in settings where the data is so large, dispersed or messy that machine-processing is required to gather, clean and transform it into forms suitable for analysis. We also study computer-based techniques for the analysis of such data, including machine data-visualization and machine-learning. Finally we consider how the practice of reproducible research and the development of interactive web-based applications can enhance communication of the results of data analysis.

Prequisites

MAT111 or CSC115 or PSY211 or permission of the instructor.

When Offered

Fall semesters.

More Info

This course continues the Data Analysis thread of the minor. The language of instruction is R, which you studied in CSC 115, but since the course may be taken by students who have not has CSC 115 we'll start from scratch with the elements of R that we need for this course. You can think of this as a gentle review.

What will be new to you are the special contributed R-packages, such as dplyr that facilitate manipulation of data sets, and ggplot2, an elegant system of computer graphics for producing graphical summaries of data.

You'll also become acquainted with the new field known as machine learning, in which we use the computer to build models that make predictions—sometimes astonishly accurate ones—in practical situations. The models we study, including classification an regression trees, as we as random forests, bring us to the door-step of the influential new discipline of data science.

Since Data Analysis encompasses the effective communication of what one has learned from data, we take a closer look at R Markdown—first studied in CSC 115—as a tool for writing data analysis reports quickly and easily. We also learn to write simple Shiny applications that permit non-technical users to do simple data analysis interactively over the web.

Students majoring in Biology or one of the social sciences may find that this course prepares them well for projects in their major that require statistics and analysis of data.

Course Description

The study of basic front-end web design, including HTML and CSS and other design topics. Possible topics include: CSS frameworks, static site generators, flat content-management systems and elementary JavaScript. ART 323 may be substituted for this course in order to fulfill requirements of the Computer Science minor.

Prerequisites:

CSC 115 or permission of the instructor.

When Offered

ART 323 Web Design is quite similar to CSC 323, and is offered both Spring and Fall semester by the Art Department. CSC 323 will be offered only when ART 323 is not, and even then only if there is sufficient demand.

ART 323 automatically substitutes for CSC 323 to fulfill requirements for the Computer Science minor. It also serves as an alternative prerequisite for CSC 324 Web Programming

More Information

Most likely you'll be taking the the ART 323 version of this course. You will learn about HTML, the mark-up language for the content of web pages, and CSS (Cascading Styles Sheets) the language that is used to specify the precise look and feel of a website. As time permits, you'll get into a bit of Javascript as well. By the end of the course you should be able to customize simple static websites, and you may get some practice with a popular Content-Management System such as Wordpress and set up a few sites of your own.

Course Description

The study of one or more web programming languages, and the application of these languages in front-end and back-end web development.

Prerequisites:

CSC 323. However, as ART 323 is similar to CSC 323 and is the web design course that is usually offered at Georgetown, ART 323 will be accepted in place of CSC 323.

When Offered

Fall semesters.

More Information

JavaScript, the language that lives in your browser and makes websites interactive and fun, is the primary subject of this course. We'll spend most of the semester learning JavaScript as a programming language, first in a "neutral" environment provided by online tools such as JS Bin, but soon we'll move to the browser environment and learn how to add exciting interactive features to our websites. We'll also get a taste of Node.js, which allows JavScript to be used as a general-purpose programming language. Node also puts you at the beginning of "back-end" web development, the art of building web applications that can interact with databases to store user-data and perform actions on behalf of users.

We'll spend some time on static-site generators. These are great tools for quickly developing many types of websites. Static sites serve up quickly, and can be hosted on the web quite cheaply---even for free! Mostly likely we'll study the Javascript-based generator known as Harp, but we'll also keep working with Hugo the engine that powers the blog you set up in your first-year classes. If we are lucky we'll even get to see how a static-site generator can be attached to a CMS (Content-Management System), so that non-technical users can edit and add content to a site that you build for them.

Course Description

This course introduces database concepts necessary to inform the choice of a database system for applications, and to construct and use a database.
At least one type of database system is studied, and is used in both data analysis and web-app development settings.

Prerequisites:

CSC 215 and CSC 324

When Offered

Spring semesters.

More Information

CSC 405 functions much like a "capstone" course in a major, drawing upon your the programming, web-design and data analysis skills you have developed in earlier courses.

At the beginning of the course we learn about the basic principles of relational databases and study MySQL, a common language used to interface with relational databases.

We then apply databases in the setting of data analysis, writing R programs that pull data from a database and create numerical and graphical summaries of that data. We also learn to write simple Shiny applications that permit non-technical users to perform data analysis on the Internet.

In the final portion of the course we study PostgreSQL, an object-relational database system, and do a bit more with the Node.js environment that was introduced in CSC 324. We apply Node and PostgreSQL to the construction of simple web apps such as online games. These are the baby steps toward becoming a "full-stack" web developer!

Course Description

Students may receive graduation credit for internships with appropriate disciplinary content that meet the faculty-approved criteria for academic internships. Such experiences include a significant reflective component and must be supervised by a full-time member of the Georgetown College faculty. 1-3 credits.

Prequisites

CSC115 and consent of the supervising instructor.

When Offered

As needed.

More Info

This course is especially useful for someone who is interested in web design and who can find an organization in the community that needs a website. If you plan to design a website then of course you should have done well in CSC 323 and CSC 324.

With the consent of the Computer Science Program Coordinator, the three-credit version of CSC 460 can substitute in the major for a required course such as CSC 303 or CSC 405.

This is our special-topics course. We don't expect it to be offered very often, though, unless there happen to be an exceptionally large number of minors who get interested in the same subject.

It can count for 1, 2 or 3 credits. In special circumstances the three-credit version could subsitute for a required course in the minor, but don't expect that to happen.

Possible Schedules

CSC 115 is the cornerstone of the program. For someone taking it in the Fall semester, a good sequence to complete the minor is as follows:

Fall Spring
Year One CSC 115 CSC 215
Year Two CSC 303 CSC 323 (or ART 323)
Year Three CSC 324 CSC 405

If you do CSC 115 in the Spring, then your sequence could look like this:

Fall Spring
Year One CSC 115
Year Two CSC 303 CSC 215,
CSC 323 (or ART 323)
Year Three CSC 324 CSC 405

It's possible to squeeze everythig into just two years:

Fall Spring
Year One CSC 115 CSC 215,
CSC 323 (or ART 323)
Year Two CSC 303,
CSC 324
CSC 215,
CSC 405 (or ART 323)

Random Programming Quote

Computer science is no more about computers than astronomy is about telescopes.
Edsger Dijkstra