OREGON INSTITUTE OF TECHNOLOGY
俄勒冈理工学院
Software Engineering Technology
软件工程技术
CST 407 Seminar - C# and the .NET Framework
CST 407研讨会-C#和.NET Framework
Course Syllabus - Fall 2003
课程大纲-2003秋季
Instructor Information:
讲师信息:
Name: Scott Hanselman Email: scott -a-t- hanselman.com
姓名: Scott Hanselman电子邮件: scott -at-hanselman.com
Phone: 880-2486 Office Location: The Ether
电话: 880-2486办公地点:以太
课程表: (Class Schedule: )
讲座/实验室:14053星期五6:00p-8:50p波特兰-CC1045(Lecture/Lab: 14053 Friday 6:00p-8:50p Portland - CC1045 )
Class Web Site: http://www.computerzen.com/cst407
课堂网站: http : //www.computerzen.com/cst407
Textbook:
教科书:
Required Text: C# Primer, Stanley Lippman
必填文本:C#Primer,Stanley Lippman
Optional References: Essential .NET, Don Box and Chris Sells
可选参考:Essential .NET,Don Box和Chris Sells
Programming Pearls, Second Edition, Jon Bentley
编程珍珠,第二版,乔恩·本特利
The Pragmatic Programmer, Andrew Hunt and David Thomas
实用程序员,Andrew Hunt和David Thomas
Software Tools:
软件工具:
Minimal development:
最少的开发:
· The Windows .NET Framework SDK - Most work will happen at the command-line
· Windows .NET Framework SDK-大多数工作将在命令行进行
· SharpDevelop - Open Source IDE written in C# w/source
· SharpDevelop-用C#编写的带有源代码的开源IDE
Minimal web development (there may be small web projects, nothing major)
最少的Web开发(可能有小的Web项目,没什么大不了的)
· Cassini - Simple ASP.NET Web Server (IIS not needed) w/source
· Cassini-带有源代码的简单ASP.NET Web服务器(不需要IIS)
· The ASP.NET Web Matrix
· ASP.NET Web矩阵
Preferred development
首选发展
· Visual Studio.NET Academic Edition – Great to have, but we won’t lean on it
· Visual Studio.NET Academic Edition –很棒,但我们不会依赖它
For homework
作业
· Lutz Roeder's Reflector - Decompiler
· 卢茨·罗德的反光镜-反编译器
· NUnit - Testing framework
· NUnit-测试框架
Philosophy and Prerequisites
哲学与先决条件
This class is a 400 level class and while it may look easy (most syllabi do) I will have high expectations. C# is a 3rd generation 'C' family language. This class assumes you've programmed in some language that includes a if-then construct of some kind. An understanding of Object Oriented design will be important.
这门课是400级的课,虽然看起来很简单(大多数教学大纲都这样),但我会有很高的期望。 C#是第三代“ C”家庭语言。 此类假定您已使用某种语言进行编程,其中包括某种if-then构造。 对面向对象设计的理解将很重要。
For those of you who feel advanced now and think this class may be too easy, I will ratchet up the difficulty after class as far as you'd like. I will stay as long after class talking tech as you like.
对于那些现在觉得自己很高级并且认为这堂课太简单了的人,我会在下课后尽可能增加您的难度。 上课后,我会根据您的意愿停留多长时间。
Coding is an art and all art has its associated literature. I expect you to read as much code as you write. Every week, bring in a snippet (10-20 lines) of someone else's code that you've found on the web. Two places to start are www.gotdotnet.com and www.codeproject.com. Email the cool snippets to me and we'll discuss some of them in the last 30-45 minutes of class.
编码是一门艺术,所有艺术都有其相关的文献。 我希望您阅读的代码与编写的代码一样多。 每周,输入您在网上找到的别人代码段(10-20行)。 两个起点是www.gotdotnet.com和www.codeproject.com 。 通过电子邮件将很酷的摘要发送给我,我们将在课程的最后30-45分钟内讨论其中的一些摘要。
.NET is very powerful, but it can turn bad programmers into very bad programmers very quickly.
.NET非常强大,但是它可以很快将不良的程序员转变为不良的程序员。
Homework:
家庭作业:
Homework should be zipped (just code, no bin or obj folders) and sent to my email address before 9AM each Friday. The subject must contain [CST407] including the brackets. I'm not kidding here, and this is not a suggestion. Include '[CST407]' in the subject or the homework goes in the bit bucket and you get a zero grade for that assignment. Learn to love netiquette. J
作业应压缩(仅代码,无bin或obj文件夹),并在每个星期五上午9点之前发送到我的电子邮件地址。 拍摄对象必须包含[CST407],包括括号。 我不是在开玩笑,这不是建议。 在主题中包含“ [CST407]”,否则作业会归于“零头”,则该作业的成绩为零。 学会爱网络礼仪。 Ĵ
We'll be writing Unit Tests for all our homework programs using NUnit 2.x. Include them with your homework.
我们将使用NUnit 2.x为所有家庭作业程序编写单元测试。 将它们包括在作业中。
Tentative Outline:
暂定大纲:
Week
|
Date
|
Topic(s)
|
Text
|
HW/Lab Assignment
|
DUE Date
|
1
|
10/3
|
Course overview, class logistics.
The Gist of .NET
Files and Compiling
Decompiling
Namespaces
Classes
Assemblies
Value Types and Reference Types
Intro to NUnit
|
Ch1
|
Visit Class web site.
1. Print syllabus.
2. Purchase book.
3. Write HelloDOTNETWorld.exe without the IDE, compile it, and successfully email the code to me following the guidelines above.
4. Write an NUnit Test for HelloWorld
(4 points - the only freebie)
|
Next Fri
9:00am
|
2
|
10/10
|
More on deployment
C# keywords
Garbage Collection
Arrays
Strings and Formatting
System.Collections (brief)
Exceptions
|
Ch1
|
Read Chapter 1.
1. Create and populate a multidimensional array of value types
2. Spin through the array and pretty print their contents to the console.
3. Write tests
(4 points)
|
Next Fri
9:00am
|
3
|
10/17
|
Class Design
Constructors
Private/Public
This, static, const, readonly
Delegates
Passing by ref and value
Overloading, function and operator
Casting
Debug/Trace
ConfigFiles
|
Ch2
|
Read Chapter 2
1. Create a class Car with and Engine, Windows, Wheels
2. Create behavioral methods on all classes
3. How will you structure your class? Does the Car contain Wheels?
4. Test it
(4 points)
2 points Extra Credit:
1. Write a C# console app that prints out true or false if a year is a leap year. Ex: leapyear.exe 1996 outputs 'true'
How many lines of code did it take? Why?
2. Test it
|
Next Fri
9:00am
|
4
|
10/24
|
OOPapolooza
Class Hierarchies
Abstract
Single Inheritance
New and base
Overriding
Exceptions
Type/typeof
Binding/Activator
|
|
Read Chapter 3 and 4
1. Extend your Car and create Planes and Trains.
2. How does OOP help? How does it Hinder?
3. Test it
(4 points)
1. Dynamically instantiate a class from a Fully Qualified Assembly Name in your app.config file
3. Test it
(4 points)
|
Next Fri 9:00am
|
5
|
10/31
|
Exploring the System namespace
System.IO
System.Net
System.Data
Threading
|
Ch5
|
Study for Midterm
NO HOMEWORK THIS WEEK
|
Next Fri
9:00am
|
6
|
11/7
|
All XML all the Time System.Xml Everything you need to know about Xml in 3 hours. J
|
|
Take Midterm (90 minutes) 1. Multiple Choice and Short Answers (20 points) Homework: 1. Take a Books Xml file I'll give you and read it into memory 2. Setup arbitrary searching like findbooks.exe 'author = 's*'' 3. Do it with XmlTextReader 4. Do it with XmlDocument 5. Do it with XPathNavigator (4 points) Write up ~500 words on what the ramifications of moving the software industry to a “Managed“ environment over previous kinds of Software Development. (4 points)
|
Next Fri 9:00am
|
7
|
11/14
|
C# applied to WinForms |
|
Homework: TBD (4 points)
|
Next Fri 9:00am
|
8
|
11/21
|
C# applied to WebForms
|
|
Homework: TBD (4 points) NEXT WEEK: THANKSGIVING
|
Next Fri 9:00am
|
9
|
12/5
|
The CLR Attributes Reflection Inside Serialization Interop/PInvoke
|
|
Homework: Show me the status of your Final! Something better be working by now. ;) (4 points) |
Next Fri 9:00am
|
10
|
12/12
|
TURN IN FINAL
|
|
9AM: TURN IN FINAL. We'll have a formal 'egoless' code review and I'll grade them (anonymously) on the projector and we'll discuss them.
|
|
周 |
日期 |
主题) |
文本 |
硬件/实验室分配 |
截止日期 |
1个
|
10/3
|
课程概述,课堂后勤。
.NET的要点
文件和编译
反编译
命名空间
班级
装配体
值类型和引用类型
NUnit简介
|
通道1
|
访问班级网站。
1.打印教学大纲。
2.购买书。
3.在不使用IDE的情况下编写HelloDOTNETWorld.exe,对其进行编译,然后按照上述指南将代码成功通过电子邮件发送给我。
4.为HelloWorld编写一个NUnit测试
(4分-唯一的免费赠品)
|
下周五
9:00 AM
|
2
|
10/10
|
有关部署的更多信息
C#关键字
垃圾收集
数组
字符串和格式
System.Collections(简要)
例外情况
|
通道1
|
阅读第1章。
1.创建并填充值类型的多维数组
2.旋转阵列并将其内容漂亮地打印到控制台。
3.编写测试
(4分)
|
下周五
9:00 AM
|
3
|
10/17
|
类设计
建设者
私人/公共
静态,常量,只读
代表们
通过引用和值
重载,功能和运算符
铸件
调试/跟踪
配置文件
|
通道2
|
阅读第二章
1.使用,引擎,Windows,车轮创建类汽车
2.在所有类上创建行为方法
3.您将如何组织课程?
汽车是否装有车轮?
4.测试
(4分)
2分额外
积分:
1.编写一个C#控制台应用程序,如果年份是a年,则输出true或false。
例如:jumpyear.exe 1996输出'true'
它需要多少行代码?
为什么?
2.测试
|
下周五
9:00 AM
|
4 |
10/24
|
OOPapolooza
类层次结构
抽象
单继承
新和基础
覆写
例外情况
类型/类型
绑定/激活剂
|
|
阅读第3章和第4章
1.扩展您的汽车并创建飞机和火车。
2. OOP有什么帮助?
它如何阻碍?
3.测试
(4分)
1.从app.config文件中的完全合格程序集名称动态实例化一个类
3.测试
(4分)
|
下周五 9:00 AM |
5
|
10/31
|
探索系统名称空间
系统
系统网
系统数据
穿线
|
通道5
|
期中学习
这周没有家庭作业
|
下周五
9:00 AM
|
6 |
11/7 |
一直都是XML 系统文件 您需要在3小时内了解有关Xml的所有信息。 Ĵ |
|
参加期中考试(90分钟) 1.多项选择和简短答案 (20分) 家庭作业: 1.拿一个我会给您的Books Xml文件并将其读入内存 2.设置任意搜索,例如findbooks.exe'author ='s *' 3.用XmlTextReader完成 4.用XmlDocument做 5.用XPathNavigator来做 (4分) 写出约500个字,以说明在过去的软件开发中,将软件行业转移到“托管”环境所带来的影响。 (4分) |
下周五 9:00 AM |
7 |
11/14 |
C#应用于WinForms |
|
作业:待定 (4分) |
下周五 9:00 AM |
8 |
11/21 |
C#应用于WebForms |
|
作业:待定 (4分) 下周:感恩 |
下周五 9:00 AM |
9 |
12/5 |
CLR 属性 反射 内部序列化 互操作/ P调用 |
|
作业:告诉我您决赛的状态! 最好现在开始工作。 ;) (4分) |
下周五 9:00 AM |
10 |
12/12 |
上交最后 |
|
上午9点:最后提交。 我们将进行正式的“无人参与”代码审查,并在投影机上对它们进行分级(匿名),然后进行讨论。 |
|
Class Scoring:
班级评分:
First, the obvious. 100 Points possible.
首先,显而易见。 100分可能。
A >=90
A> = 90
B >=80
B> = 80
C >=70
C> = 70
D >=60
D> = 60
F < 60
F <60
Midterm - 20 points - on 11/7 (in class)
期中-20分-11/7(课堂上)
Final - 40 points - on 12/12 (take home, given 12/5)
决赛-40分-12/12得分(带回家,给出12/5)
Homework - 10 programs @ 4 points each, gives 40 points, one or more a week for ten weeks.
家庭作业-10个课程,每个课程4分,每学分40分,每周一次或多于10周。
Homework programs will be graded on:
作业计划的评分标准如下:
1. Correct use of Basics (foreach, classes, namespaces, BCL libraries)
1.正确使用基础知识(foreach,类,名称空间,BCL库)
2. Appropriate Use of OOP (no gratuitous object hierarchies, please)
2.适当地使用OOP(请没有免费的对象层次结构)
3. Robustness (did you test it?)
3.健壮性(您测试过吗?)
4. Attention to Detail (did you think?)
4.注意细节(您认为吗?)
Extra Credit: Elegance/Flair (my discretion)
额外信用:优雅/天赋(我自行决定)