130 likes | 386 Views
ICP-CS Introduction to Programming. Lecture 1: Introduction Abdurrahman Qadan Islamic Center of Portland Computer Science Series class Phone: 503- 985-8682 Email: aqadan@gmail.com. Introduction. Programming is to solve problems using computers How to do it at all ?
E N D
ICP-CS Introduction to Programming Lecture 1: Introduction Abdurrahman Qadan Islamic Center of Portland Computer Science Series class Phone: 503- 985-8682 Email: aqadan@gmail.com
Introduction • Programming is to solve problems using computers • How to do it at all ? • How to do it robustly ? • How to do it effectively ? • Programming consists of two steps: • Algorithmic design (the architects) • Coding (the construction workers) • Programming requires: • A programming language (e.g., C#) to express your ideas • A set of tools to design, edit, and debug your code • A compiler to translate your programs into machine code • A machine to run the executable code
Why Computer Science ? • Computer is becoming ubiquitous … • programming gets you more out of computer • learn how to solve problems • dealing with abstractions • be more precise • Unfortunately, most people • know little about Computer Science • know little about Programming • write bad or buggy programs • become lost when writing large programs • What can help? Take Computer Science !
This Course • The goal of computer science is to learn • elementary and intermediate programming techniques • how to craft medium and large programs • C# programming language (Java is similar) • important algorithms and data structures • software tools and operating systems • in-depth knowledge about Computer Science • A heavy programming course • Use Microsoft Visual Studio . NET C# Compiler • Intended mainly as your first programming course
Crafting Programs Effectively • Program design • design process • stepwise refinement & top-down design • bottom-up design • modularization, interfaces • use of abstractions • Programming style • structured programming • readable code • effective use of language constructs • “formatting” • software organization • Documentation and comments
Algorithms and Data Structures • Algorithm: a strategy for computing something, e.g., • sorting: putting data in order by key • searching: finding data in some kind of index • finding primes and generating random numbers • string processing • graphics: drawing lines, arcs, and other geometric objects • Data structure: a way to store data, e.g., • arrays and vectors • linked lists • Two are related: • data structures organize data • algorithms use that organization
Java Programming Language • Sun Microsystems corporate research project (1991) • Code-named Green, led by James Gosling and Bill Joy • Based on C and C++ • Intended for intelligent consumer-electronic devices • Lack of popularity almost causes cancellation • Sudden popularity of WWW provides new potential • Java capable of dynamic content (e.g., animation, interaction) • Grabbed attention of business community • Now very widely used • Enhance functionality of WWW servers • Provide applications for consumer devices
.NET Framework • Introduced by Microsoft (June 2000) • Vision for embracing the Internet in software development • Heart of .NET strategy • Language- and “platform-” independence • Visual Basic .NET, Visual C++ .NET, C# and more • Includes Framework Class Library (FCL) for reuse • Executes programs by Common Language Runtime (CLR) • Programs compiled to Microsoft Intermediate Language (MSIL) • MSIL code translated into machine code • (Unlike Java) this is mostly Windows (MS) centric • There is a Linux port (see the Mono project)
C# Programming Language • Developed at Microsoft by Anders Hejlsberg et al • Event driven, object oriented, visual programming language • Based from C, C++ and Java • Incorporated into .NET platform • Web based applications can be distributed • Programs that can be accessed by anyone through any device • Allows communicating with different computer languages • Integrated Design Environment (IDE) • Makes programming and debugging fast and easy • Rapid Application Development (RAD)
Why C# and Java in this class ? • They support so-called safe internet programming • They are simpler than other object-oriented languages [C++] • They are safe and robust --- no core dump or dead console • They have good graphics package • They are related to C and C++ • They have good client-server and network support • They are good for your summer job • However, they are not easy to learn; each has many features … • Right now, C# has a better buzz than Java
Learning C# • Just like learning any new language • Syntax: “new words” • Grammar: how to put them together • Programming: telling a coherent story • Library: use plots already written • Initially overwhelming, but pays off in the end! • Picking up Java and C++ after C# should be easy!
Course Information • Textbook: Computing with C# and .NET Framework by Art Gittleman • Information, assignments, & lecture notes are available on-line. • We won’t use much paper ! • Official URL: http://www.assaber.com/icpcs • For help, send email to aqadan@gmail.com • Please read online information at least once every two days!
Course Assignments • 8 – 9 assignments in all • Mostly programming; from small & easy to large & difficult • Due on the date specified on the schedule sheet • Assignments available online (no paper handout!) • Any C# programming environment would work! • Microsoft Visual Studo . NET (C# IDE) • Need 3.3 GB disk space & 256 MB memory • .NET Framework SDK (batch C# compiler, ~130 MB disk space) • All assignments must be submitted online (see the web site for detail) • Two exams