A programming language is the programmer's principle interface with the computer. More than just knowing how to program in a single language, programmers need to understand the different styles of programming promoted by different languages. In your professional life, you will be working with many different languages and styles at once. You will encounter many different languages over the course of your career. Understanding the variety of programming languages and the design tradeoffs between the different programming paradigms makes it much easier to master new languages quickly. Understanding the pragmatic aspects of programming languages also requires a basic knowledge of programming language translation and runtime features such as storage allocation.

This course will cover widely used parallel and distributed computing methods, focusing on datacenter-scale distributed software and methods such as Hadoop, MapReduce, Spark, and distributed graph algorithms. We'll study the types of algorithms which work well with these techniques, and have the opportunity to implement some of these algorithms. 

This course is designed to give the student a practical experience in system administration. It covers a number of different topics and issues that faces system administrators in their daily activities.

This course provides an introduction to the concepts of business intelligence (BI) as components and functionality of information systems. It explores how business problems can be solved effectively by using operational data to create data warehouses, and then applying data mining tools and analytics to gain new insights into organizational operations. Detailed discussion of the analysis, design and implementation of systems for BI, including: the differences between types of reporting and analytics, enterprise data warehousing, data management systems, decision support systems, knowledge management systems, big data and data/text mining. Case studies are used to explore the use of application software, web tools, success and limitations of BI as well as technical and social issues.
This course is aimed at helping students build up an understanding of how to develop a software system from scratch by guiding them thru the development process and giving them the fundamental principles of system development with object oriented technology using UML. The course will initiate students to the different software process models, project management, software requirements engineering process, systems analysis and design as a problem-solving activity, key elements of analysis and design, and the place of the analysis and design phases within the system development life cycle.
This course is aimed at helping students build up an understanding of how to develop a software system from scratch by guiding them thru the development process and giving them the fundamental principles of system development with object oriented technology using UML. The course will initiate students to the different software process models, project management, software requirements engineering process, systems analysis and design as a problem-solving activity, key elements of analysis and design, and the place of the analysis and design phases within the system development life cycle.
This course provides you with an understanding of how various business situations are modeled and optimized effectively using mathematical modeling and quantitative techniques. Examples of the techniques covered in this course are time-series analysis, regression, optimization (linear, nonlinear, and discrete), probabilistic modeling, decision analysis, and simulation. Application areas include forecasting, finance, operations, production and logistics
This course provides an overview and advanced coverage of the human computer interaction. It states the ideal resource for learning the interdisciplinary skills needed for interaction design, human-computer interaction, information design, web design, and ubiquitous computing. This relies on an understanding of the capabilities and desires of people and on the kinds of technology available to interaction designers, together with a knowledge of how to identify requirements and develop them into a suitable design. At the end of this course, students should present a proposal of a new technology interaction that can apply -based on the current technology existing today.
This course provides an overview and advanced coverage of the human computer interaction. It states the ideal resource for learning the interdisciplinary skills needed for interaction design, human-computer interaction, information design, web design, and ubiquitous computing. This relies on an understanding of the capabilities and desires of people and on the kinds of technology available to interaction designers, together with a knowledge of how to identify requirements and develop them into a suitable design. At the end of this course, students should present a proposal of a new technology interaction that can apply -based on the current technology existing today.
This course will showcase the group of technologies that are used as a base or infrastructure upon which other applications, technologies, or processes are developed for the end-user. All platform technologies involve two distinctly different levels to their design with these different levels defined according to their degree of abstraction. Specifically, this course will enable the students to engage with technologies and tools for setting up and sustaining IoT applications and environments through a well-laid outflow that is focused at the start on getting us to appreciate the nuances and nitty-gritty of the IoT concept.