The first year curriculum in Computer Science at NCSSM consists of a three-course sequence in programming that introduces the student to solving problems and creating applications in the programming languages Python and Java. Along the way, students become proficient at working in a UNIX environment. These three courses form the foundation to all of our other offerings. All classes meet for one trimester four times a week and take lab.
What about AP? Go to the left and click on ap.php. This has information about the AP exam and our take on it.
Introduction to Procedural Programming (AP 'A' I)
Prerequisite You should have good basic algebra skills, and some problem-solving skill. Point-and-click proficiency with windoze, mac or linux is helpful but not entirely essential. No previous exposure to programming is assumed. Everything is done "from scratch"
Description This course has two parts. Part I is a couple of weeks; Parts II comprises the rest of the term. The idea behind the course is for the student to learn how to solve problems in a modern programming language, with an emphasis on learning how to write and test short, correct procedures.
Part I, Elements of Computing and Basic UNIX We begin with an introduction to the basic parts of a computer and their roles. We then do a brief study of number representation and algorithms. We study and use elementary UNIX commands and learn how to function using the command-line interface. We then turn our attention to the vi editor and get some practice with it by learning a little XHTML and CSS. WE use the XHTML validator to check pages. Since we require pages to validate, our students must learn how to read and interpret error messages to fix problems in their code. hroughout the course, the students learn more UNIX technique as needed. These topics are all addressed in the beginning part of the course.
- What is a computer?
- Numbers and their representations
- the login process
- file management
- the vi editor
- pipes and redirection of stdin and stdout
- XHTML/CSS and the web
At the end of this unit, the student will demonstrate proficiency with UNIX by taking a simple test and by building a XHTML-compliant web site incorporating CSS with certain required elements. Proficiency with vi and UNIX will be needed to manage, execute and edit programs created during the course.
Part II, Procedural and Functional Programming in Python We begin by disussing the core synatx of Python and the ideas of variable and type. We then turn to an early development of functions and promote the idea of the function as a black box that accomplishes of a specific task. We do integrated testing, so we test our black boxes before we rely on them.
Early in the process, we learn about using objects, and reinforce the idea that objects are "smart data types" that are aware of their state and which can receive messages and act based on their state.
We then make Python Turing-complete. As we progress, the students write functions according to a contract specificiation and write test code to test their vulnerabilities.
Another unique feature of this class is the introduction of regular expressions as a tool for search and validation. We also emphasize file IO and use of the os module to interact with the file system.
Toward the end, some ideas of object-oriented programming in Python are introduced. The students learn a little about QT4, PyGame and some other GUI
The students all do a final project which consists of writing a short working application.
We will address all of these topics.
- file and console input and output
- documenting your code
- algorithms
- variables
- lists
- forking: if,elif and else
- looping: while and for
- recursion
- python functions (defs)
- integrated testing
- regular expressions
The students will learn how to read from and write to text files, and they will get a little preview of data structures using Python lists. They will do a culminating Python project in which they develop a simple application. Examples of such projects include applications like a comment strippers and an HTML tag balance checker.
Intermediate Programming: Java Objects and Graphics (AP 'A' II)
Prerequisite Introductory Programming or permission of the department
Description In this course, we will emphasize the object structure of the Java language. As we proceed, the skills learned in the first course are quickly transferred to Java. Students will develop skill in writing and designing Java projects that use several classes and will gain a experience in using the Java Swing libraries for writing event-driven applications.
Part I, Introduction to Objects
- data members and access specifiers
- objects, classes and methods
- Using the Java API documentation
- arguments and return values
- overloading methods
- constructing objects
- object references
Part II, Implementing Classes
- the black box approach
- The public interface of a class
- javadoc for the public interface
- adding constructors and methods
- driving and testing
- implicit and explicit arguments
- static and final data members
- inheritance and interfaces
Part III, Building Graphical Applications
- frame windows and widgets
- drawing shapes and text
- dialog boxes and text input
- listeners and events
- Text FileIO
- Object Output Strems and saving program state
Advanced Programming
Prerequisite Completion CSC 404 or its equivalent, or permission of the department. Students seeking advanced placement into this course should have very strong programming and problem solving skills. They need to be strong object-oriented programmers.
Description This course falls into three parts. Each is described below.
Part I, Container Types We do a rapid review of arrays and the ArrayList class. Data structures are treated as containers that store objects using a specific scheme. We pay particular attention to lists; the students learn how to implement a list from scrach using an array and a linked implementation.
We then turn to studyng algorithms for search and sorting within lists. The student learns these algorithms and uses the to implement sorting and seearching in their list classes.
Part II, Generic Programming, Algorithms and the Collections API The Collections API is used as the basis for the creation and implementation of data structurs such as stacks, queues, and lists. Generics will be used throughout to create code that is flexible and highly reusable. The students how to write generic code and how to create and use data structures that support applications they create
Part III, Final Project The students collaborate in small teams to create working applications that store, organize and retrive data. These occur in a graphical interface and represent a capstone for the 404-406 sequence.