CS2282 Advanced Programming 3 credits

Advanced object oriented programming and software OOP design and development in a modern object-oriented language not previously used. Event driven programming. Elementary threading. UML. Includes a significant software project.

Prerequisites: CS1182
Programming language: C#
Compiler: Visual Studio 10
Operating system: Windows 7 or Other OS may be run within a virtual machine
Computer Usage: Assignments involve significant computer usage.
CS2282 and subsequent courses require a laptop computer running the appropriate operating system – either native or within a virtual machine.
Course Coordinator: David Beard

Office Hours:
Class Hours:
Class Location:
Textbook: C# 4 and .NET 4, Wrox Authors: Nagel, Evjen, Glynn, Watson, Skinner. ISBN-13: 978-0470502259
Major Topics Covered:
Fundamental programming structures in C#
Classes, Inheritance, overloading, overriding, private, public, protected, class diagrams and tools
Class design and analysis
Graphics programming
Exposure to binary and N way trees
Event handling
Try, catch blocks and error handling
GUI components
Simple database access

•an ability to apply knowledge of computing and mathematics appropriate to the discipline
  ◦advanced object oriented design and implementation, event driven programming, and sufficiently large projects to require major design tradeoffs and decision making on are essential to learning how to apply computing knowledge to real world problems.
  ◦Exposure to binary and N way trees require comprehending recursive definitions.
•an ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
  ◦The larger projects, requiring fairly extensive OOP design and implementation planning; class diagram, user interface design, and written implementation plan (one page) are required for teach project about 1/3 of the way through the assignment.
  ◦Critical Thinking: Project assignments are somewhat less well specified that projects in the first two programming classes requiring the student to have to divide deliverables into “essential” and “bell and whistle.” Exposure to less well defined situations is essential to building critical thinking skills.
•an ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
  ◦The larger projects, requiring fairly extensive OOP design and implementation planning; class diagram, user interface design, and written implementation plan (one page) are required for teach project about 1/3 of the way through the assignment.
•an ability to analyze the local and global impact of computing on individuals, organizations, and society
  ◦Projects are lightly graded on user interface design allowing students to have to begin to think about who the user is and what is her task.
  ◦Recognition of the need for, and an ability to engage in, continuing professional development
  ◦Introduction of a new programming language (C#) and paradigm (Event Driven Coding, Threading, …), with less “hand holding” than in previous classes teaches students to learn somewhat on their own, while still in the safe confines of a programming course.
  ◦Professional reference manual is used rather than undergraduate text book.
•an ability to use current techniques, skills, and tools necessary for computing practice
  ◦C# and visual studio are among the most popular professional development environments. Students begin to realize that learning all the vendor-provided software (under System. ) is far more time consuming than the language syntax itself and the mark of a professional. Event driven programming is an essential skill in the real world as is threading.
•an ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the trade-offs involved in design choices
  ◦small exposure to N way and binary trees as foreshadowing of the subsequent data structures class.
•an ability to apply design and development principles in the construction of software systems of varying complexity.
  ◦The course provides the first experience with relatively large projects more like those typically found in the real world. More extensive exposure to OOP and object oriented design and design tradeoffs.

50% homework, 50% tests. Homework is submitted using the Moodle tool. Homework projects are graded on a 100 point scale with a grade and written comments provided to the student through Moodle. Tests are graded on a 100 point scale. <=50% F, 60-69% D, 70-79% C, 80-89% B, 90-100 A.

Homework (Laboratory) Projects
Varies by semester and section, four homework projects are assigned each semester varying from 3 to 4 weeks Class diagrams are required for all projects. Class diagrams, an interface design, and an implementation are required to be turned in roughly 1/3 of the way through the assignment. Office hours are provided by the instructor and students are encouraged to start assignments early and seek frequent assistance. If students wish, they may work on campus in one of the computing laboratories during office hours or otherwise when the faculty member is available so any questions that arise can be answered with a walk of only a few minutes.

Software Design
Computer Org. 
 Performance issues can arise, particularly with 2D graphics problems allowing the introduction to what is happening in the underlying software and hardware and what might be done to improve system speed.
Data structures                               
 binary and N-way trees covered.
Programming Languages
 introduces C#, the second programming language in the major. Event driven programming. Exposure to an extensive vendor-provided class structure (e.g. system.)
Social and Ethical Issues: Students are expected to behave according to ethical standards in their preparation of tests and homework. Overall ethical conduct will be evaluated.
Theoretical Content
 Tree and some garbage collection algorithms presented
Problem Analysis
Class and inheritance design. Class diagrams.
Solution Design.
Class design and problem decomposition. Extensive class design tradeoffs discussed in class and required as part of homework solutions.

Basic data analysis
Secure coding practices

NIATEC National Science Foundation Information Assurance Directorate Department of Homeland Security CISSE Scholarship For Service