Course co-ordinator(s): Dr Santiago Chumbe (Edinburgh).
Aims:
• To introduce fundamental concepts, languages and technologies underlying software development on the Internet.
• To advance the students' web development skills; covering scripting and procedural programming (e.g. JavaScript and Python).
• To teach best practices and design patterns in procedural programming to create robust, efficient, secure and maintainable software.
• To gain the ability to create scalable, interoperable, modular and service-oriented internet-based applications.
• To confer the ability to select and apply suitable strategies, libraries, tools and frameworks to achieve productive programming.
• To enable students to implement a web-based procedural programming project, embedded in and contextualised for the host company.
Detailed Information
Course Description: Link to Official Course Descriptor.
Pre-requisites: none.
Location: Edinburgh.
Semester: AY.
Syllabus:
Structured and procedural programming concepts. Server environment programming (e.g. node.js) and database integration (SQL and noSQL).
Sessions, web storage and cookies. Asynchronous Processing. Web services (e.g. SOA, ROA, SOAP, REST,microservices).
Procedural Programming Best Practices. Productive Programming (e.g. agile web development, MVC patterns, software testing life cycle, twelve-factor app methodology).
Distributed development and web development with virtual machines (e.g. Docker, VirtualBox) and software release tools (e.g. Puppet, Plutora).
Performance and scalability issues of web applications. Security in procedural and web programming.
Learning Outcomes: Subject Mastery
• Clear understanding of structured and procedural programming.
• In depth knowledge of established protocols and standards underlying web services and asynchronous processing.
• Proficiency and hands-on experience in procedural and/or web programming.
• The ability to apply the concepts, tools and best practices to achieve productive programming.
• Detailed technical skills to develop secure applications with procedural and web programming.
• The ability to make informed decisions about appropriate web technologies to use in an industrial context.
Learning Outcomes: Personal Abilities
• Showing creativity, problem solving (PDP) and time management (PDP) skills.
• Reflection, constructive criticism and learning from peers (PDP).
• To be able to relate learned knowledge to work-based procedural or web programming projects.
• To be able to identify problems in programming and demonstrate critical reflection (PDP)
• Ability to communicate effectively with colleagues at work place to identify requirements effectively
• Can make informed judgements about the application of Internet technologies in their workplace;
• Exercise autonomy, initiative and creativity (PDP) in the development of software applications;
• Can evaluate real-world business scenarios and propose software development solutions.
Assessment Methods: Due to covid, assessment methods for Academic Year 2020-21 may vary from those noted on the official course descriptor. Please see the Computer Science Course Weightings and the Maths Course Weightings for 2020-21 Semester 1 assessment methods.
SCQF Level: 8.
Credits: 15.
