Northern Virginia Community College
Annandale Campus

Spring Semester 2019
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 Procedures | Safety PreparationFun 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 100 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. (Do NOT buy the book. I will provide it for free all my students via Blackboard.)

You can download it here:



Class Hours:

Time: Thursday, 6 pm – 9:40 pm
Room: CT – 234
Dates: 17 January – 9 May 2019

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: 17 January 2019
  • Last day to drop with tuition refund or change to Audit: 29 January 2019 (Census Date)
  • Last day to withdraw without grade penalty: 24 March 2019 (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: 14 March 2019 (Spring Break)
  • Last day of class: 9 May 2019

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…


Success in this class requires writing lots of code and the programming projects constitute 60% of your grade.

Programming Projects 60%
In-Class Programming Assignments, Quizzes, Exams 20%
Engagement (Your active participation in the learning experience) 20%

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
    • Review Assignment
      • Read Chapters 1, 2, 4, & 5
      • Access Warrenworks Website
      • Access Microsoft Website

NOTE: I will me evolving the content of the class schedule during the semester by adding new projects and making adjustments to timing and material based on student capability and class dynamics.

Check your NVCC email and Blackboard frequently as I will use those two mediums to post class  updates and notifications

Project 1: RobotCar –  Due Week 4


Other source code samples

Recipe for Success: 

  • Write a little C# code every day
  • Read the book and be prepared for each week’s lectures
  • 20% of your grade is based on class participation. 
  • Assume there will be a quiz at the beginning of each class.
  • If you miss the midterm or final, you will receive a zero on those tests. No excuses please. 
  • Material not covered during scheduled class will be pushed to the following class. 


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 – Console Calculator
  • Hour 4:
    • Roll
    • Review
How to Write a Powershell Cmdlet in C#
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 Call
    • 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 Call
Project 2: Computer Simulator – Due Week 7
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

Creating .Net Code Modules Presentation


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
Project 3:
Robot Controlled Objects
Week 8
  • Hour 1:
    • Midterm Exam
  • Hour 2:
    • File I/O
      • Text
      • Object Serialization
  • Hour 3:
    • 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
    • Collections
    • Project 3 Overview
    • Student one-on-one
  • Hour 4:
    • Review
    • Roll
Midterm Exam
Week 9
  • Hour 1:
    • Review
    • Project 3 Detailed Discussion
  • Hour 2:
    • Inheritance
    • Interfaces
  • Hour 3:
    • Project 3 discussion continued
  • Hour 4:
    • Review
    • Roll
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
  • Final Exam
  • All Projects Due

Final Exam


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:

  1. 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.
  2. Buying, selling, stealing, or soliciting any material purported to be the unreleased contents of a forthcoming examination, or the use of such material.
  3. Substituting for another person during an examination or allowing another person to take your place.
  4. 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.
  6. 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.) If you fail to attend the first two classes I will administratively withdraw you. If you attend the first class and miss the next two classes, I will administratively withdraw you. If you miss four classes by the census date, I will administratively withdraw you. 

The Attendance Policy from the NVCC Catalog:

Education is a cooperative endeavor between the student and the instructor. Instructors plan a variety of learning activities to help their students master the course content. Students are expected to participate in these activities within the framework established in the class syllabus. Faculty will identify specific class attendance policies and other requirements of the class in the 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 nontraditional course format, is essential.
It is the student’s responsibility to inform his/her instructor prior to an absence from class. Students are responsible for making up all coursework missed during an absence. In the event of unexplained absences, the instructor may withdraw a student administratively from the course. If a student does not attend at least one class meeting or participate in an online learning class by the “last day to drop with a tuition refund” (census date), his/her class registration will be administratively deleted. This means that there will be no record of the class or any letter grade on the student’s transcript. Furthermore, the student’s class load will be reduced by the course credits, and this may affect his/her full-time or part-time student status. Tuition will not be refunded.

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!!!


  • NOVA Police at 703-764-5000
  • Police and Fire at 9-1-1


Your ability to react effectively during an emergency takes preparation. The Office of Emergency Management and Safety wants you to be prepared to react immediately. To start, you should know the locations of: the two safest and most direct evacuation routes (see posted evacuation route signs in classrooms), the locations of designated Assembly Areas outside the facility, shelter-in-place areas for a severe weather event, and the nearest automated external defibrillators (AEDs). For additional emergency preparedness information, visit the Office of Emergency Management and Safety website at:


  • Activate the nearest fire alarm and call 9-1-1 if possible. If there are no fire alarms nearby, knock on doors and yell “fire” as you exit the building.
  • Evacuate the building. Do not use elevators!
  • Feel closed doors with the back of your hand. Do not open if doors are hot.
  • Move well away from the building when evacuating, and assemble at designated assembly areas.
  • Do not re-enter the building until cleared by authorized personnel.


If the area is under a Severe Weather/Tornado WARNING, or if notified to shelter:

  • Seek shelter immediately in a Severe Weather Shelter Area or go to an interior hallway or room; at the lowest level in the building; and/or an area free of windows or glass.
  • Protect your body from flying debris with any available furniture or sturdy equipment.
  • Use your arms to protect your head and neck.
  • Wait for the “All Clear” before leaving your shelter area.


  • Determine the most reasonable way to protect your own life and call 9-1-1 or 703-764-5000 when it is safe to do so.
    Run and evacuate if you can. This may be your best chance of survival. Have an escape route in mind. Leave valuables behind and keep hands visible.
  • Hide in an area outside of the shooter’s view. Block entry to your hiding place and lock doors.
  • Turn off lights and silence electronic devices.
  • Fight as a last resort and only when your life is in imminent danger. Attempt to incapacitate the shooter. Act with physical aggression.


  • In the event of an emergency you may be notified by various means depending on the emergency. Some of the ways you may be notified include:
  • classroom telephones,
  • computer pop-ups,
  • digital flat panels,
  • NOVA Access through and, or
    text messaging through NOVA Alert. NOVA Alert is a free notification service. You are automatically signed up for email alerts through your NOVA email address.To add a mobile phone number or an additional email account, you must register by going to: You are strongly encouraged to add additional devices.
  • NOVA may use some or all notification channels to notify you. For a complete list, visit the NOVA website at and search for Alert Notification Systems.

Closing/Class Cancellations

If the College is closed or delayed for any reason, a text alert will be sent to cell phones registered on NOVA Alert and a notice will be posted on the home page of the College’s website. In addition, a message will appear on our cable television station and on local radio and TV stations. The home page of the College’s website will always have the most reliable and up-to-date information about closures or delays.

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!