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)
 
Salem State Home Computer Science Home Faculty Computer Studies Major Flow Sheet
Computer Studies Minor Courses Course Sequence Diagram Computer Laboratories

Language-specific references
Salem State Home Computer Science Home Faculty Computer Studies Major Flow Sheet
Computer Studies Minor Courses Course Sequence Diagram Computer Laboratories