CSCI 051G
Introduction to Computer Science with Grace


Computer Science 051G is an introduction to algorithm development emphasizing object-oriented design. Algorithms will be implemented as programs in the Grace programming language. We will introduce data structures and recursion as tools to construct correct, understandable, and efficient algorithms. These topics will be developed further in CSCI 054, CSCI 062, and more advanced computer science courses.

By the end of this course you should have a good basic understanding of how to develop (design, code, and debug) medium-sized programs in Grace and Java, and have a basic understanding of how one might analyze programs for correctness and efficiency.

This course is a prerequisite for all upper levelComputer Science courses. In Computer Science 051 we do not assume that you have had any previous computer programming experience. If you have had extensive previous experience you might consider CSCI 052, CSCI 054, or CSCI 062. Please discuss this with your instructor immediately if you feel you fall into this category.

This semester the CS department is offering 3 different introductory courses, CS 51G, CS 51J, and CS 51P. All three satisfy the same prerequisites for advanced courses in computer science. However, they use different languages and are will focus on slightly different applications.

CS 51G and CS 51J focus on object-oriented programming and use event-driven programming, graphics and animations (as in games) to illustrate the concepts. CS 51J uses the popular commercial object-oriented language, Java. CS 51G uses the new object-oriented language Grace. Grace was designed to help novices learn to program by eliminating irrelevant complexities typically found in commercial programming languages.

CS 51P focuses on data-intensive programming using the programming language Python. Special emphasis on working with and making sense of data in order to connect course material with applications in other disciplines. While Python is primarily a procedural language, it also includes object-oriented features.

This is the third year we have taught using Grace in this course. Grace is a very expressive language that was designed to teach novices object-oriented programming. We believe that learning Grace avoids many of the distractions of older programming languages, while providing a better foundation for learning other, more complex languages later.

Academic accommodations

If you have a certified academic accommodation, please contact me early in the term so that we can make sure that any accommodations are handled appropriately.