230 likes | 764 Views
IT 519 Introduction to Programming Using C#. Gülşen Demiröz. Summary of the Course. Introduction to programming and algorithms We will learn how to develop object oriented programs using the C# programming language on Microsoft ® .NET Platform
E N D
IT 519Introduction to Programming Using C# Gülşen Demiröz
Summary of the Course • Introduction to programming and algorithms • We will learn how to develop object oriented programs using the C# programming language on Microsoft ®.NET Platform • We will also learn few classes from the Microsoft ®.NET Framework Library as needed
Course Information • Website: http://myweb.sabanciuniv.edu/gulsend/su_current_courses/it-528/ • Instructor: Gülşen Demiröz, FENS L026, x9559, gulsend@sabanciuniv.edu • Lectures: Thursdays 19:00 – 22:00 at Karakoy Center Saturdays 13:00 - 16:00, FENS G032 • Textbooks • Visual C# 2008 Howto Program, 3rd Edition, (ISBN: 013605322X), byHarvey & Paul Deitel • C# 2008 forProgrammers, 3rd Edition, (ISBN: 0137144156), by Paul J. Deitel & Harvey M. Deitel • Inside C#, 2nd Edition, (ISBN: 0735616485), byTomArcher & Andrew Whitechapel • CLR via C#, 2ndEdition,(ISBN: 0137144156), byJeffrey Richter • Lecture Notes: http://myweb.sabanciuniv.edu/gulsend/su_current_courses/it519/lecture-notes/ • I can also upload them to SUCourse if you wish • Grading: Midterm (30%): 4th week of the course (24 October 13:00) Final Exam (40% ): Last (7th) week of the course (14 November 13:00) Homeworks (30% total): 2 homework will be assigned and they are of equal weight • Homework: programming homework, zip the whole solution and send it to me via SUCourse • Exams: programming exams on your laptops in the class, then you e-mail me
About Me & then You • Work Experience • 1997-2008 Microsoft Corporation, Redmond WA, USA • Senior Development Lead (Microsoft Online Services) • Senior Design Engineer (Office Outlook) • Software Test Lead (Windows Networking) • Software Design Engineer (Windows Networking) • Education • M.Sc., Bilkent University, Computer Engineering and Information Science, 1997 • B.S., Bilkent University, Computer Engineering and Information Science, 1995
Course Outline • Introduction (algorithms, programming languages, .NET Platform, Common Language Runtime, Framework, assemblies, packaging) • How to use Visual Studio® 2008 • A program’s structure, basic data types, arithmetic operations (precedence), assignment, implicit casting, console input/output • .NET Type System (value types vs. reference types), memory concepts, garbage collector (GC) • Classes I (constructors-destructor, properties, access modifiers) • Methods (overloading, pass-by-reference, scope of variables, static methods, operator overloading) • Control statements (if-else, switch, while, for, do-while) • Classes II (inheritance, abstract classes, interfaces, is-as) • Arrays, Collections (foreach, indexers, anonymous types) • Strings and StringBuilder • Exception Handling • Delegates and Event Handlers • Files and Streams (XML files) • Generics, Generic Collections
Before we start, let’s install Visual Studio 2008 • Fast Integrated Development Environment (IDE) • Very good user interface (UI) design • easy to find compiler errors and debugging • Let’s install it, detailed instructions on course’s web site: http://myweb.sabanciuniv.edu/gulsend/su_current_courses/it519/
Algorithms • Arabic-originated word • Step-by-step process that solves a problem • do this, then do that, ... • eventually stops with an answer • general process rather than specific to a programming language • Example: cooking rice (pirinc pilavi) • Issues • correctness • complexity and efficiency • I picked a number between 1 and 100 • You will guess it • I’ll respond “high”, “low”, “correct”. • how many guesses needed (worst case)?
Example Algorithm - Find the minimum • Initial list: 4 6 7 3 9 1 4 5 • Should we sort? 1 3 4 4 5 6 7 9 • The minimum is the first one • Optimal algorithm - About n operations • Pick 4 as the minimum • Compare 4 to 6 - min is still 4 • Compare 4 to 7- min is still 4 • Compare 4 to 3 - Pick 3 as the minimum • Compare 3 to 9- min is still 3 • Compare 3 to 1 - Pick 1 as the minimum • Compare 1 to 4- min is still 1 • Compare 1 to 5 - We are done and the minimum is 1
Analyze Problem Source Code Compile & Build Develop Algorithm Correct it Design Program Yes Syntax Errors? No Write pseudo-code on paper Run Correct (Debug) Code over the computer Correct Results? No Yes - Done Basic Program Development Steps
Development at Microsoft • I will talk more about it whenever we get a chance Release 4-12 weeks each M0 M1 M2 M3 • Plan • Schedule • Design • (Architecture) • Implement • Code reviews • Unit testing • Stabilize • Testing • Bug fixing
Programming Languages • We solve problems with algorithms • Then we use computers to run these algorithms • For this, we need programming languages to interact with the computer’s hardware • Computers represent data in numeric format • Internal representation (at the lowest level) is in binary form: 0 and 1 (4=100, 5=101) • 0 and 1’s are stored in a bit, 8 bits is called a byte • Programs are set of instructions that process data • These low level instructions are also in binary (0 and 1) • machine language: not human readable and programmable! • Rather than instruct computers at the level of 0’s and 1’s, higher level languages have been developed. • Flexible and easier programming • Compilers translate a high level language, such as C, into machine-specific executable program (0s and 1s)
C, C++ and Java • C first gained widespread recognition as the development language of the UNIX operating system. • C++ took the C language and provided capabilities for object-oriented programming (OOP). • Objects are reusable software components that model items in the real world. • Object-oriented programs are often easier to understand, correct and modify. • Sun Microsystems began development of the Java programming language in 1991. • Java is now used to develop large-scale enterprise applications.
C# (read as “C Sharp”) • C# was designed specifically for the .NET platform as a language that would enable programmers to migrate easily to .NET. • C# is object oriented and has access to a powerful class library of prebuilt components. • It has roots in C, C++ and Java, adapting the best features of each. • Microsoft introduced C# along with its .NET strategy in 2000. • The .NETplatform allows applications to be distributed to a variety of devices.
.NET Platform • Provides programmers to develop their components in any language and easily share them (old way: COM). • Very rapid development with the help of already built-in classes or platforms. • Applications in any .NET-compatible language can interact with each other. • The .NET strategy allows programmers to concentrate on their specialties without having to implement every component of every application. • End to DLL hell with versioning.
Compiling C# .NET languages C/C++ old languages code.cs code.vb code.cpp C# compiler VB.NET compiler Intermediate Language (MSIL) + metadata Assembly language compiling Common Language Runtime (CLR) JIT compiler Machine language .exe Machine language .exe
Common Language Runtime (CLR) • Programs are compiled first into Microsoft Intermediate Language (MSIL) and metadata. This is called a managed module. • Then the just-in-time (JIT) compiler translates the MSIL in the executable file into machine-language code. • CLR does not need to know which language was used. • Once the code is compiled into machine-language by the JIT, it is not needed to be compiled again. • End users need CLR on their machine to execute managed code, which comes with the .NET Framework installation.
Automatic Memory Management • One of the services that the common language runtime provides during Managed Execution. • Allocation and releasing of memory is managed by the CLR: Garbage collection. • No more memory leaks
Visual Studio 2008 • Fast Integrated Development Environment (IDE) • Very good user interface (UI) design • easy to find compiler errors and debugging • Heavy visual support to develop UI • Let’s install it, detailed instructions on course’s web site: http://myweb.sabanciuniv.edu/gulsend/su_current_courses/it519/