Programming in C#

Background

This is a proposed 1 credit course on the C# programming language. It is slated as a CSE 459 section and can be used to satisfy your 459 requirement. Due to the restrictions of 494 courses, the piloted version of the courses are offered on a graded scale rather than a pass/no-pass scale.

Description

Elementary language constructs of C# for students who are well versed in programming.

Level, Credits, Class Time Distribution, Prerequisites

Level Credits Class Time Distribution Prerequisites
U 1 1 cl 321

Quarters Offered

General Information, Exclusions, Cross-listings, etc.

Intended Learning Outcomes

Topics (not in order)

Number of Hours Topic
1 Overview
2 Classes and objects; garbage collection
2 Extending classes; programming to interfaces
1 Generics; Collections (sets, lists, maps).
1 Iterators; Exceptions
1 Forms (GUI classes)
1 Network Communication
1 C# documentation and resources

Grader

The grader for this course is Kyle Tolle (tolle.23 -at- osu.edu)

Texts and Other Course Materials

Course Notes

The course notes are available in Powerpoint, a 640x480 flash video or a 320x240 podcast.

  1. Overview of the course, the .NET platform and C# (powerpoint)
    1. Read Chapter 1 and skim through Chapter .
    2. Introduction to the Course 2:51 (podcast 320x240)
    3. History of C# and .NET 10:40 (podcast)
    4. CLR, CLI, oh my! 11:49 (podcast)
    5. Assemblies and Manifests 5:47 (podcast)
  2. C# language basics (powerpoint)
    1. Read Chapter 2.
    2. Language Overview & Built-in Types 17:53 (podcast)
    3. Reference and Value Types 17:33 (podcast)
    4. Arrays 5:33 (podcasts) (powerpoint)
    5. Quiz 1
  3. (in-class) Visual Studio 2005
    1. Worksheet for the in-class exercise
    2. Creating a Console project
    3. Using Intellisense effectively
    4. Deleting and adding References
    5. Walk-thru of the IDE windows
    6. Using the debugger
    7. Assignment: Write a simple program that reads the text from the clipboard and prints out a sorted list of all the unique words or terms (ignoring case). (pdf) Due January 21, 2009 at 11:59pm.
  4. Creating Types (powerpoint)
    1. Read Chapter 3.
    2. Object-Oriented Design 5:35 (podcast)
    3. Polymorphism and Inheritance 20:52 (podcast) (powerpoint)
    4. Properties 5:45 (podcast) (powerpoint)
    5. Interfaces 8:42 (podcast)
    6. Structs 4:11 (podcast)
    7. Class modifiers 6:59 (podcast)
    8. Fields and Methods 7:06 (podcast)
    9. Constructors 10:16 (podcast)
    10. Operators 6:48 (podcast)
    11. Quiz 2
  5. (in-class) Creating Interfaces and Classes
    1. Creating a dll in Visual Studio (Animal Hierarchy)
    2. Automatic implementation of Interfaces with Visual Studio
    3. Reinforcing the Explicit Interface syntax
    4. Organizing your code with #regions
    5. Start work on Lab2
    6. Assignment: Write a class library using polymorphism, abstract base class and interfaces that represents a logical scene graph. Implement the Visitor design pattern and write a console application that creates some scenegraphs and prints them out. (pdf). Due Feb 9 at midnight.
  6. Creating Types continued
    1. TypeCasting and Collections 8:59 (podcast) (powerpoint)
    2. Generics 32:15 (podcast) (powerpoint)
    3. Quiz 3 (due Feb 2 before class)
  7. (in-class) Continue to work on Lab2
    1. Help with Lab2 will be provided.
    2. Attendance is not required.
  8. Collections
    1. Read Enumerations and Iterators from Chapter 4
    2. Read Chapter 7
    3. Enumeration 38:17 (podcast) (powerpoint)
    4. Lists, Queues, Stacks, and Sets 9:46 (podcast)
    5. Dictionaries 14:31 (podcast)
    6. Quiz 4 (due Feb 9 before class)
  9. (in-class) Windows Forms (powerpoint)
    1. Lab2 is due tonight.
    2. Create a GUI (worksheet)
    3. Declarative programming using the designer and properties
    4. Start work on Lab3
    5. Assignment: Write a Windows Forms application that displays Flash Cards and prompts for an answer. (html). Due Feb 25 at midnight.
  10. Collections continued
    1. Read Equality Comparison in Chapter 6.
    2. Read Chapter 7.
    3. Start work on Lab1
    4. Customizable Collections and Proxies 8:08 (podcast)
    5. Equality 38:20 (podcast) (powerpoint)
    6. Comparisons 3:32 (podcast) (powerpoint)
    7. Quiz 5 (due Feb 16 before class)
  11. (in-class) Windows Forms
    1. Work on Lab3
    2. Attendance is not required.
  12. Advanced C#
    1. Read Chapter 5
    2. Plugging in Equality and Comparisons
    3. Delegates 17:46 (podcast) (powerpoint)
    4. The Observer Design Pattern 15:39 (podcast) (powerpoint)
    5. Events 15:17 (podcast) (powerpoint)
    6. Quiz 6 (due Feb 23 before class)
  13. (in-class) Windows Forms
    1. Work on Lab3
    2. Attendance is not required.
  14. Misc C# and Visual Studio features (powerpoint)
    1. Read the rest of Chapter 4.
    2. Extension Methods 7:01 (podcast)
    3. Initializers, implicit types and anonymous types 10:00 (podcast)
    4. Anonymous methods 9:16 (podcast)
    5. Lamda Expressions 17:46 (podcast)
    6. Quiz 7 (due March 2 before class)
  15. (in-class) Data Binding in a Windows Form (Worksheet)
    1. Data Binding (powerpoint)
    2. Simple Video Library entry application
    3. BindingList<T>
    4. Binding to enums
    5. Setting the DataSource
    6. Setting the DisplayName
    7. Start work on Lab4: Take the ideas from the worksheet and create your own serialized collection. It can be anything except videos. Submit an input file you created with your final solution. Due March 13 at midnight.
  16. LINQ
    1. Read Chapter 8
    2. Attributes (podcast) (powerpoint)
    3. LINQ 29:39 (podcast) (powerpoint)
    4. Quiz 8 (due March 11th anytime)
  17. (in-class) Final Wrap-up
    1. Course evaluation
    2. Attendance IS required
    3. Work on Lab4
  18. Extra / Old (too complex for the class)
    1. On-line overview of the software 41:18
    2. Source-code documentation using XML documentation and SandCastle
    3. Unit Testing
    4. Lab specifications
    5. Graph Software
    6. Graph Software Documentation
    7. Updated Grid.cs file
    8. Demo of GridViewer

Development Environment

We will be using Visual C# 2008. Students can also use any version of Visual Studio.NET or open source implementations (eg. Mono, Portable.NET). Microsoft has its own "shared source" version of .NET codenamed Rotor, which builds on Windows (and only Windows in version 2.0), FreeBSD, and Mac OS X. This will expose you to the internals of a fairly full (source code) implementation of the framework, but these versions may not have all the features you need to complete the assignments.  If you get strange error messages for simple code, you may be using a version that does not support the particular language feature you are exercising.  Visual C# Express 2008 and Visual Studio .NET 2008 are the only versions I know of that support everything we will do.

Representative Lab Assignments

Grades

You must get a 50% on all quizes and a 50% on all labs to pass. All quizes will be waited equally. All labs will be weighted equally. The actual formula will be 50% (QuizAverage) + 50% (LabAverage) + 10% (attendance) > 63%.

Programming labs 85%
Class attendance/participation 15%

Relationship to BS-CSE Program Outcomes/EC 2000 Criterion 3 Outcomes

a
b
c **
d
e *
f
g
h
i **
j
k **

 


Last modified: March 10, 2009 1:55 PM