Northern Virginia Community College
Annandale Campus

Fall Semester 2018
16-Week Session

ITP 136 – C# Programming I
Section 001N – 4 Credit Hours







Course Description | Prerequisites | Instructor | Text | Class Hours | Office Hours | Important Dates | Course Objectives | Major Topics | Grades | Class Schedule | Inclement Weather Policy | Academic Dishonesty | Attendance Policy | Learning And Growth PolicyEmergency Evacuation ProceduresFun Policy

Course Description:

Introduces students to the fundamentals of object oriented programming and the implementation of object oriented programs using Microsoft’s C#.NET programming language and the .NET Framework.


ITP 153 Computer Program Design.


Rick Miller, MS Computer Science
California State University Long Beach
Phone: 703-207-0532


  Rick Miller. C# For Artists: The Art, Philosophy, And Science Of Object-Oriented Programming, Second Edition. Pulp Free Press, ISBN-13: 978193204118

This book is only available in PDF format from Pulp Free Press.


Class Hours:

Time: Thursday, 6 pm – 9:40 pm
Room: CT – 103
Dates: 23 August 2018 – 3 May 2018

Office Hours:

You can talk to me before, during or after class. You can also call me but I prefer email.

Important Dates To Remember:

  • First day of class: 23 August 2018
  • Last day to drop with tuition refund or change to Audit: 11 September 2018 (Census Date)
  • Last day to withdraw without grade penalty: 31 October 2018 (Note: The award of ‘W’ after the last day to withdraw without grade penalty REQUIRES official documentation and the Dean’s signature.)
  • Holidays/Non Instructional Days: 22 November 2018 (Spring Break)
  • Last day of class: 14 December 2018

Course Objectives:

Upon the completion of this course you will be able to:

  • Understand object-oriented programming concepts and apply them in C# programs
  • Create C# console applications
  • Create C# Windows Forms applications
  • Understand the Microsoft .NET platform
  • Utilize .NET components in your C# programs

Major Topics:

  • C# Fundamentals
  • Type Hierarchy
  • Classes vs. Structures
  • Namespaces
  • Console IO
  • .NET Framework
  • Boxing
  • Collections
  • Program flow control
  • Conditional expressions
  • Exceptions
  • Event Processing
  • Windows Forms Programming
  • Console programming
  • Delegates
  • and more…


Your grade for this class will be derived entirely from your performance on the projects. There will be four core projects and they have the weight of exams. They will be challenging.

I have a system of grading projects…and it goes something like this:



Roughly Equates To…
check ++ Outstanding. You’ve exceeded all my expectations in some, perhaps intangible, way. Maybe it was the way you formatted your code, perhaps something else…in any case, I saw or felt the QWAN (Quality Without A Name) in your assignment and you deserve special recognition for your efforts. A
check + As compared to other similar projects yours stood above the rest. You exceeded one or perhaps several of my expectations. B
check Good job! You met all minimum project requirements and your program runs flawlessly. This is what I expect of every student. C
check – Your program may run but just barely. It suffers from a major or perhaps several minor bugs. D
check — Your program does not run, or, worse yet, it runs but you cheated! In either case, you are missing the big picture and need serious remedial help. If you get too many check –‘s you should start exploring other areas of study or repeat the course at a later date. F




You will demonstrate your projects to me during designated class hours. You can run your programs on the supplied lab computers or on your personal laptop.
I will grade each project according to the following criteria:

  • It MUST execute in such a way that satisfies the minimum project requirements
  • Source code must be neatly formatted and readable
  • Each source code file MUST begin with a comment header that clearly identifies ownership.

Class Schedule:


Topics Covered

Week 1
  • Course Introduction & Ice Breaker
  • Review Syllabus
  • Web Site
  • Text review
  • Recommended References
  •  Project organization & formatting
  • Review projects and due dates
  • General discussion of procedural vs. Object-Oriented Programming
  • C# programming in the macro
  • Student Project Management
    • The student as analyst
    • Why being a CS student is so difficult
      • The overwhelming complexity of it all
    • How to start a project
      • OK…you’ve been handed a project, now what?
      • Where do you start?
    • The many roles you play as a student
      • Requiremets Analyst
      • Designer
      • Implementor
        • Programming
    • Checklist for starting a project
      • Decomposing the project
      • What files do you need?
        • How do you determine?
    • The act of programming
      • Don’t start at the computer
      • Set the mood
      • Concept of The Flow
      • Be Creative
      • You’re an artist
      • Be Extreme
        • The Programming Cycle
          • Plan
          • Code
          • Test
          • Factor
          • Repeat


  • Compiling C# Programs
    • Command Line
    • IDE
  • Week 1: First Class
  • Hour 1:
    • Welcome
    • Icebreaker
    • Syllabus Review
  • Hour 2:
    • C# Overview
    • Creating simple project
      • Hello World Example
    • Setting up your development environment
  • Hour 3:
    • Getting Help
      • Where To Find Resources
        • Warrenworks Website
        • Microsoft Website
  • Hour 4:
    • Roll Call
    • Review Assignment
      • Read Chapters 1-4
      • Access Warrenworks Website
      • Access Microsoft Website
All students send me an email so I can add you to the class email list.
I will use the list to notify you of updates to this website and other
class business.Project 1:
Robot Car
– Due Week 6
Week 2-3
  • Week 2: C# Fundamentals
  • Hour 1:
    • Quick Review
    • Computer Basics
      • How A Computer Works
      • Memory
        • Heap
        • Stack
    • Procedural Vs. Object Oriented Programming
      • Dependency Inversion
      • Liskov Substitution
      • Open-Closed Principle
  • Hour 2:
    • C# Program Structure
      • Create simple program in IDE
      • Compiling A Simple Program from the command line
        • csc
    • Types
      • Value Types
      • C# Type Alias
      • int – System.Int32
      • Enumerations
      • Reference Types
      • Pointer Types
      • Reverence Types vs. Value Types
      • Type copying semantics
    • Control Structures
      • if
      • if/else
      • while
      • do/while
      • switch
      • for
      • foreach
  • Hour 3:
    • Important API Classes
    • Assignment Discussion Robot Car
  • Hour 4:
    • Roll Call Review
Week 3-4
  • Week 3: Arrays – Robot Car Detailed Discussion
  • Hour 1:
    • Review
    • Compiling Source Files From Command Line
    • Arrays
  • Hour 2:
    • Enumerations
    • Robot Car Candidate Data Types
    • Menu Display
    • Menu Processing
      • switch Statement
      • Stub Methods
  • Hour 3:
  • Robot Car
  • State Machines
    • Implementing SetSprayerOn() & SetSprayerOff()
  • Hour 4:
    • Roll Review

Week 4: More Robot Car

  • Hour 1:
    • Review
    • Robot Car Move Considerations
    • Processing multi-dimensional arrays
    • Processing movements using switch statement
  • Hour 2:
    • Converting data types
      • System.Convert class
      • String to integer
    • Other helpful .NET packages
  • Hour 3:
    • Student One-on-one time
  • Hour 4:
    • Review Roll
Week 5
  • Week 5: Intro to GUI Programming
  • Hour 1:
    • Review
    • Project 2: Photo Database General Discussion
    • Review project 2
  • Hour 2:
    • Simple GUI programming
      • Form class
      • TextBox class
      • Button Class
    • Processing button Click events
      • Button.Click event
      • Writing event handler method
      • Tying event handler method to Button.Click
      • event System.EventHandler
  • Hour 3:
    • Processing Strings
      • Split method
      • foreach keyword
  • Hour 4:
    • Review
    • Roll



Week 6
  • Week 6:
  • Hour 1:
    • Review
    • Creating multi-file projects
    • Compiling multiple source files on command line
  • Hour 2:
    • Properties
      • Read-Only
        • get
      • Write Only
        • set
      • Read-Write
        • get
        • set
  • Hour 3:
    • Project 3 Discussion
    • Separating GUI from Application
    • Registering & Handling Events
  • Hour 4:
    • Review
    • Roll
    • Student one-on-one help
Project 2:
GUI Controlled Robot Car
Serialized Object
Example Code
Alternative Project 2: Computer Simulator
Week 7
  • Hour 1:
    • Review
    • Handling Events in Separate Classes
    • Last week’s problem revisited
    • The solution
  • Hour 2:
    • Stepping through Multi-Class Event Processing A critical skill
    • Delegates
    • Events
    • Registering event processing methods with events
  • Hour 3:
    • Object-Oriented Programming Macro View
    • What set of problems is OO trying to solve
    • Object-Oriented terminology
      • Inheritance
      • Base Class
      • Derived Class
      • Abstract Methods
        • The purpose of abstract methods
      • Interfaces
        • The purpose of interfaces
  • Hour 4:
    • Review
    • Roll


Week 8
  • Hour 1:
    • Review
    • Delegates
    • Multicast Delegates
      • Only compilers and tool can inherit from MulticastDelegate
      • A linked list (called invocation list) is used to hold list
        of delegates.
      • Delegates are called in the order in which they appear.
    • Tracing the Event-Handling Sequence
  • Hour 2:
    • File I/O
      • Text
      • Object Serialization
  • Hour 3:
    • Collections
    • Project 3 Overview
    • Student one-on-one
  • Hour 4:
    • Review
    • Roll


.Net Code Modules Presentation

Week 9
  • Hour 1:
    • Review
    • Project 3 Detailed Discussion
  • Hour 2:
    • Inheritance
    • Interfaces
  • Hour 3:
    • Project 3 discussion continued
  • Hour 4:
    • Review
    • Roll
Project 3:
Robot Controlled Objects
Week 10
  • Hour 1:
    • Review
    • Project 3 Review (Continued)
  • Hour 2:
    • Obtaining Polymorphic Behavior
    • Specifying behavior in interface
    • Arrays of base class reference types
    • Referring to derived class objects
  • Hour 3:
    • Student One-On-One
  • Hour 4:
    • Review
    • Roll
Week 11
  • Hour 1:
    • Review
    • Networking Fundamentals
    • Physical and Logical Application Distribution
  • Hour 2:
    • Networking API Overview
    • Sockets
  • Hour 3:
    • Project 4 Discussion
  • Hour 4:
    • Review
    • Roll
Youtube Videos

Intro To Multithreaded Programming

Creating Managed Threads with the System.Threading.Thread class

Network Programming: Intro to TCPListener and TCPClient Classes

Network Programming: Creating Multithreaded Client-Server Application

Network Programming: Creating Multihomed Server (Listening on multiple IP addresses.)

Network Programming: Serializing Objects over the Network




Week 12
  • Hour 1:
    • Review
    • Project 4 Discussion (Continued)
  • Hour 2:
    • Project 4 Discussion (Continued)
  • Hour 3:
    • Student One-On-One
  • Hour 4:
    • Review
    • Roll
Project 4:
Client-Server Robot Car
Client-Server ExampleClient-Server Example with
Week 13
  • Hour 1:
    • Review
    • Project 4 Discussion (Continued)
  • Hour 2:
    • Project 4 Discussion (Continued)
  • Hour 3:
    • Student One-On-One
  • Hour 4:
    • Review
    • Roll
Week 14
  • Project 4 Discussion (Continued)
  • Student One-On-One
Week 15
  • Student One-On-One
Individual help with projects
Week 16
  • All Projects Due
All Projects Due!!!

Inclement Weather Policy

Check the NOVA website for inclement weather announcements.

Academic Dishonesty:

I expect the work you do in this class to be your own. I encourage the free exchange of ideas between students, however, the work you ultimately hand in to fulfill course requirements must not be simply copied from another student or other sources. It’s easy to be honest; here are a few rules to help guide you:

  • Cite all references used to write code.
  • You may look at another student’s programming code but give them credit for helping you.
  • If you use stuff from the Internet to help you on a class project list the source.
  • When in doubt…list the source and give credit.
  • You may use code I provide in class in your projects but give me credit for the code I provide.

From the NVCC Catalog

When College officials award credit, degrees, and certificates, they must assume the absolute integrity of the work you have done; therefore, it is important that you maintain the highest standard of honor in your scholastic work. The College does not tolerate academic dishonesty. Students who are not honest in their academic work will face disciplinary action along with any grade penalty the instructor imposes. Procedures for disciplinary measures and appeals are outlined in the Student Handbook. In extreme cases, academic dishonesty may result in dismissal from the College. Academic dishonesty, as a general rule, involves one of the following acts:

  • Cheating on an examination or quiz, including the giving, receiving, or soliciting of information and the unauthorized use of notes or other materials during the examination or quiz.
  • Buying, selling, stealing, or soliciting any material purported to be the unreleased contents of a forthcoming examination, or the use of such material.
  • Substituting for another person during an examination or allowing another person to take your place.
  • Plagiarizing means taking credit for another personÕs work or ideas. This includes copying another personsÕs work either word for word or in substance without acknowledging the source.
  • 5 Accepting help from or giving help to another person to complete an assignment, unless the instructor has approved such collaboration in advance.
  • Knowingly furnishing false information to the College; forgery and alteration or use of College documents or instruments of identification with the intent to defraud.

Attendance Policy:

You should only miss class when you have a genuine emergency. I prefer advance notification via email. It goes without saying that you are responsible for course and assignments due, and for information covered, on the day(s) you miss. If you miss too many classes, and too many is entirely at my discretion, you will earn an “F” for the class. (Note: To date, the only student who failed the class under this policy did so not because they missed a number of classes, but because they failed to communicate with me about their situation.)

The Attendance Policy from the NVCC Catalog:

“Education is a cooperative endeavor between a student and his or her instructor. Instructors plan a variety of learning activities to help their students master the course content. Your contribution is to participate in these activities within the framework established in the class syllabus. Faculty will identify specific class attendance policies in the class syllabus that is distributed at the beginning of each term. Successful learning requires good communication between students and instructors; therefore, in most cases, regular classroom attendance, or regular participation in the case of a non-traditional course format, is essential.

It is your responsibility to inform your instructor prior to an absence from class if this requested by the instructor in the class syllabus. You are responsible for making up all course work missed during an absence. In the event of unexplained absences, especially if you miss the first three weeks of class, your instructor will withdraw you administratively from the course.”

Learning and Growth Policy

“NOVA is a place for learning and growing.  You should feel safe and comfortable anywhere on this campus.  In order to meet this objective, you should: a) let your instructor, his/her supervisor, the Dean of Students or Provost know if any unsafe, unwelcome or uncomfortable situation arises that interferes with the learning process; b) inform the instructor within the first two weeks of classes if you have special needs or a disability that may affect your performance in this course.”

Emergency Evacuation Procedures:

Should the need to evacuate the room in a hurry arise, the procedures to do so are posted in the class. We’ll discuss these on the first day and hope we never have to use them!!!

Fun Policy

Most importantly…I want you to enjoy the class. I will learn as much from you as I hope you’ll learn from me. To this end, I sincerely appreciate any comments you may have about course content and welcome your suggestions on ways to improve this course for future classes. Welcome to class…have fun!