| CSC 325
Advanced Programming Techniques |
4 cr. |
Presents state-of-the-practice software development techniques such as Web based computing,
application data exchange, frameworks for managing and securing robust systems, and developing
multi-tier software systems. Topics will be illustrated by applications to such areas as
remote objects, communication with remote components, reflection, security and Web services.
Specific topics will be chosen based on current software trends. Three lecture hours and three
hours of scheduled laboratory per week, plus extensive laboratory work outside of class.
Prerequisite: CSC 260 with grade of C+ or higher.
Note: The above course description is currently pending approval, and is
expected to be in effect as of January 2006. The previous course description is available
here.
Goals:
- CG1: to enhance students' skills in problem analysis and program design and implementation
through the presentation of complex applications;
- CG2: to present a unified discussion of the important ideas and techniques involved
in the use of modern programming systems and tools in software design;
- CG3: to guide the student through one or more large-scale projects involving these tools;
- CG4: to provide additional software development experience, normally using a programming
language or environment other than ones that the student has already studied.
Objectives:
Upon successful completion of this course the student will have demonstrated the ability to:
- CO1: select (or design) appropriate algorithms, code libraries, and language features
for the solution of a complex problem, and use these ingredients effectively to obtain
a solution to the problem;
- CO2: employ a clear, consistent, readable style in the implementation of the problem solution;
- CO3: produce clear documentation for the problem and its solution;
- CO4: understand and employ the various types of code reuse in object-oriented design;
- CO5: understand and use a variety of components from popular standard software libraries;
- CO6: understand and carry out software development related to the specific topics presented
in the course;
- CO7: design a suite of test data for a particular problem and perform thorough testing and
debugging of the generated code.
Topics will normally be selected from the following areas:
- object-oriented application frameworks
- design patterns
- computer simulation and modeling (general discussion and examples)
- concurrent programming and multithreaded applications
- thread safety
- thread synchronization
- thread cooperation
- object serialization
- object collections (implementations and usage)
- in-code documentation design and usage
- design and deployment of web applications
- sockets programming
- remote object activation
- Web services communication protocols
The purpose of this course is to illustrate a variety of programming techniques in
application areas which do not have file structures and database techniques as their
primary focus. Close attention will be paid to implementation details. There will be
laboratory assignments to be completed during the scheduled laboratory periods, plus
additional programming assignments in which students will be asked to implement selected
techniques. The programming language(s) used may be different from those used in other
programming courses. There may also be periodic written homework assignments.
All programs must conform to departmental guidelines for algorithm design and
program implementation, and laboratory reports must conform to the written guidelines
supplied by the instructor. Regardless of numeric average or grades on individual
assignments or examinations, a student will not be eligible for a passing grade in
the course unless he or she has submitted a report for every laboratory exercise and
programming assignment within the time frame specified by the instructor.
The course grade will be determined using the following approximate weights:
laboratory exercises - 25%, programming assignments - 35%, examinations (midterm and
final) - 40% total.
Bibliography:
Design/application references
- Bibliography:
Design/application references
- Bentley, Jon. Programming Pearls. (Addison-Wesley, 1986)
- Bentley, Jon. More Programming Pearls. Confessions of a Coder.
(Addison-Wesley, 1988)
- Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides,
John. Design Patterns. Elements of Reusable Object-Oriented
Software. (Addison-Wesley, 1995)
- Knuth, Donald E. The Art of Computer Programming. Volume 3: Sorting
and Searching. Second Edition. (Addison-Wesley, 1998)
Language- and platform-specific references
- Arora, Geetanjali; Aiaswamy, Balasubramaniam; Panday, Nitin. Microsoft C# Professional Projects.
(Thomson Course Technology, 2002)
- Bakharia, Aneesha. C# Fast and Easy Web Development. (Thomson Course Technology, 2002)
- Bergsten, Hans. JavaServer Faces. (O'Reilly, 2004)
- Bishop, David. A Complete Guide to C#. (Jones and Bartlett, 2004)
- Feuer, Alan R. MFC Programming. (Addison-Wesley Developers Press, 1997)
- Gittleman, Arthur. C#.NET Illuminated. (Jones and Bartlett, 2005)
- Gittleman, Arthur. Computing with C# and the .NET Framework. (Jones and Bartlett, 2003)
- Hoffman, Kevin; Kruger, Lonny. Microsoft Visual C#.NET Framework. (Sams Publishing, 2005)
- Kimmel, Paul. Advanced C# Programming. (McGraw-Hill, 2002)
- Pohl, Ira. C# by Dissection. (Pearson Education, Inc., 2003)
- Sebesta, Robert W. Programming the World Wide Web. (Pearson Education, Inc., 2003)
- Singh, Inderjeet; Brydon, Sean; Murray, Greg; Ramachandram, Vijay; Violleau, Thierry; Stearns, Beth.
Desinging Web Services with the J2EE 1.4 Platform: JAX-RPC, SOAP, and XML
Technologies. (Addison-Wesley, 2004)
- Yao, Paul; Durant, David. .NET Compact Framework Programming with C#. (Addison-Wesley, 2004)
|