Instructors Our offices are in the new Engineering Technology Suite off of the Reynolds breezeway; here is our contact information.
- John Morrison, Office 7, telephone: 919-416-2746, email: morrison at ncssm dot edu
- Sam Boyarsky, Office 6, telephone: 919-416-2684, email: boyarskys AT ncssm dot edu
You can send snailmail to us at NCSSM, 1219 Broad Str., Durham, NC 27705.
Prerequisites This is "programming from scratch;" you are expected to have no special knowledge about computing. It is helpful if you have point-and-click proficiency with a modern computer, but we are doing nothing with a computer we don't think you can learn in a day or so. You should have some basic algebra skills and you should be a careful reader.
Course Objectives These are the things you will learn about.
- You will understand the basic components of a computer and their roles.
- You will learn how to interact with a computer via a command line interface, and understand the ethical dimensions of the fact that data are property.
- You will understand how CSS and HTML5 are used to create web pages and how to use them properly.
- You will learn how to program the computer to accomplish tasks in a procedural language.
- You will learn how to write and debug simple, complete applications.
Course Goal You will learn how to solve problems and automate processes by writing custom applications in a modern programming environment using the procedural programming paradigm. You will demonstrate this skill by creating these sorts of programs.
Here is a rough outline of the class.
- What is a computer? (1 wk) In this section, you learn how computers store numbers and characters. You learn about the role of the operating system and the basic components of hardware. You also see some examples of algorithms at work.
- Introduction to LINUX(1.5 wks) You will learn how to create, edit and manage files and directories in LINUX. You will learn about pipes, redirection and how to search a file for information.
- XHTML and CSS(1 wk) In this unit you learn how to make an XHTML-compliant web page and how to detect and fix problems with your code. You learn a little about style sheets and how to use them to control the appearance of your document.
- Variables, Expressions and Types in Python(1.5 wks) You will work on creating and manipulating symbols and objects in Python. The basic types are explained. You will learn how to use the Python interactive shell and how to write very simple Python programs.
- Python Functions(2 wks) You will learn how to write procedures called functions in Python. You will see how various symbol tables pass in and out of visibility and how to properly test functions you create.
- Conditional Execution (.5 wks) You will learn how to cause your program to react to its current state and to make decisions.
- Looping and Recursion(2.5 wks) You will learn how to make a program perform repetitive tasks.
- Power Programming Tools(2 wks) You will learn about Python FileIO, regular expressions and pattern matching, and the OS and system modules. You will use these to create efficient and professional-looking applications
- Final Project(1-2 wks) This is a capstone project you write that develops a simple but useful application by applying the techniques you learn in this class. If time allows, we may add some object-oriented programming to the mix.
Class Organization This class is at once lab and lecture. We will demonstrate coding constructs and have you try them right away. You are encouraged to bring your laptop to class and configure your machine to your liking.
Some programming projects will be individual efforts, although there will be a few joint activities (especially in pairs). You are expected to gain an active understanding of the material; this means that you need to be a full participant in class at all times. You are encouraged to share ideas and ask questions. Unless I specify otherwise, you may help each other debug code. For further guidance, see our policy on Academic Honesty.
Programming Assignments and Other Assessments No one really understands what is going on in a programming class until they can write programs that compile and work. It's this simple: if you can't do this, you don't really understand the material. The biggest mistake made by many CS students is that they confuse an active understanding of the material with a passive understanding. Until you attempt, fuss over and debug programs, you are nowhere. Therefore, you will see work on a wide variety of programs.
Whoa! Back up! You are required to maintain all of your programs in in your personal drives. You are also required to keep any written your graded assignments returned to you in your notebook, and keep your programs you turn in in your electronic files. This is your insurance against us accidentally corrupting, destroying or misplacing your files. This does happen sometimes!
Attendance Policy Participation is vital to your progress in class. Excessive unexcused absence and tardiness will not be tolerated and will reflect poorly in your grade. You are expected to be aware of attendance policy outlined in the Student Handbook and to adhere to it.
Late/Incomplete/Makeup Work When you anticipate an excused absence, see us ASAP for makeup arrangements. By nature, this class builds sequentially and depends on steady progress. No other late or incomplete work will be accepted. If you run into difficulty, see us and we can grant you and extension to complete your program or project.
Academic Honesty in this Class: You are encouraged to share ideas and ask questions. Unless we specify otherwise, you may help each other debug code. You may use diagrams, analogies, or other un-technical explanations. You may not share any code or any "dead-giveaway" help. When you help classmates, your goal is to enable them to solve similar problems on their own. If you don't think you can comply with this guideline you should turn down your classmates' request for help. Refer them to your instructor. You are bound by policy as laid out in these two documents.
- Academic Honesty Policy for Computer Science, as well as
- School-Wide Classroom Policy
The Classroom Policy Page contains all of the documents pertaining to general classroom policy in Computer Science; these apply to all CS classes. Make sure you read and understand them.