This course helps to equip students with essential skills needed for structured andobject-oriented programming. At the completion of the course, students should understand fundamental programming concepts such as flow control, objects, classes,methods, procedural decomposition, inheritance, and polymorphism; be able towrite simple applications using most of the capabilities of the Java programminglanguage and apply principles of good programming practices throughout the process.
At the end of the course, students should be able to research, analyze, design,develop, and maintain functioning software systems in accord with the goals of the51ԹSoftware Engineering Department and the 510300 IT competency standard(OK 17, 17, 115).
Topics: Structured Programming:
Topics: Object-oriented Programming
Safety Management for SFW is an introductory course covering the most importantaspects of Software System Safety from a developer’s point of view. The 3-creditcourse focuses on topics of building secure, safe, and sustainable software. Thiscourse takes an in-depth look into low-level programming languages such as C,C++, and assembly, their relationship with the underlying hardware. We try tounderstand how design decisions of such foundational technologies, used to buildcore systems around us, and their relationships may influence virtual and real-worldsustainability and safety.
The IT Essentials course covers the fundamentals of computer hardware and software and advanced concepts such as security, networking, and the responsibilities of an IT professional. It is designed for students who want to pursue careers in ICT and students who want to gain practical knowledge of how a computer works. Students who complete COM-108 will be able to describe the internal components of a computer, assemble a computer system, install an operating system, and troubleshoot using system tools and diagnostic software. Students will also be able to connect to the Internet and share resources in a networked environment. New topics in this version include mobile devices such as tablets and smartphones and client-side virtualization. Expanded topics include security, networking, and troubleshooting. Hands-on lab activities are essential elements that are integrated into the curriculum.
The inclusion of Packet Tracer supports alignment with the new CompTIA A+ certification objectives. This course helps students prepare for the CompTIA’s A+ certification, most importantly the Essentials exam.
Learning Objectives:
The goal of the course is to give knowledge of classic data structures and algorithmsbasic for both practical and theoretical parts of computer science. A brief list of datastructures and algorithms studied in this course: dynamic arrays, linked lists, hash tables, binary trees, linear search, binary search. Special emphasis in the course will bedone on the STL part of the C++ standard library: classes string, vector, list, set,unordered_set, map, unordered map, and standard algorithms.
Programming language and software tools of the course:
Students have to do lab works and projects using standard C++ and any compilersthat support standard C++ and command-line interface.
Performance of algorithms. O-notation
Linked lists. Class list of standard library C++
Doubly linked lists and single linked lists.
Hashing. Classes unordered_set and unordered_map of standard library C++.
Implementation of class HashSet
Binary Search Trees. Classes set and map of standard library C++
Implementation of class BinarySearchTree
Recursion. Backtracking
Sort algorithms: insertion sort, merge sort, quick sort
Heap, heap sort
Graphs. Breadth-first Search, depth-first search,
Topological sort.
Weighted graphs. Shortest path.
Weighted graphs. Minimum spanning tree.
Dynamic Programming. Longest common subsequence problem
Algorithms of standard library C++.
The course introduces students to the topic of computer architecture and organization. Students will focus on studying the structure and design of modern centralprocessing units. Students will learn the basics of the x86-64 and aarch64 instructionsets, the assembly languages for the platforms, and the representation of high-levellanguage structures in the low-level languages.
At the end of the course, students should be able to research, analyze, design,develop, and maintain the software in low-level programming languages in accord with thegoals of the 51ԹSoftware Engineering Department and the 510300 IT competencystandard (OK 17, 17, 115).
Topics Covered
The course introduces students to the fundamentals of operating systems design and implementation. Topics include an overview of the components of an operatingsystem, synchronization, implementation of processes, scheduling algorithms, memory management, and file systems. This course is designed for Software Engineeringmajors and minors.
As CPU speeds began to exceed 3.5 GHz, further CPU speed increases started to reach a limit. As a result, computer manufacturers began building machines with multiple CPUs.Techniques for programming these multi-core machines weresoon developed. In this same time frame, graphical processingunits (GPUs), Field Programmable Gate Arrays (FPGAs), andother types of heterogeneous computing technologies andintegrated circuits also emerged. Heterogeneous computingprovides efficient ways of addressing specific types ofcomputing needs. Today, most modern computing and
especially server-side or cloud computing is distributed acrossheterogeneous computing machines. The modern software engineer who is interested in fast and efficient [cloud-based] computing must appreciate when and how to use suchtechnologies. This course provides an introduction and
grounding on these topics with a special focus on:
AIMS AND OUTCOMES
By the end of this course, students will:
The course teaches students the fundamentals of computer graphics through a processof developing a 3-D engine in a series of laboratory tasks throughout the course.
Students will study how to work with graphics accelerators with the help of theOpenGL ES API to deliver rich 3-D computer-generated images, animations, orinteractive applications. As a result, students should be able to research and analyze the functioningof a complex real-time computational system, improve their skills using programming languages for software design and development in accord with the goals of the51ԹSoftware Engineering Department and the 510300 IT competency standard (including competency elements OK 1–7, 1–7, 1–15).
Topics Covered
The course introduces students to software engineering, teaching each of theindividual steps of the software life cycle: requirements, design, coding, testing, andsoftware delivery. The course covers estimating man-months to complete a project andwriting project proposals. Along with the theory, students will go through all thestages of software development on their own projects.
This is a two-semester course designed for Software Engineering majors and minors.The course introduces students to software engineering, providing information on keyprocesses.
Topics Covered
All students majoring in Software Engineering are required to complete a 2 semester-long Senior Project/Thesis in their senior year. A Senior Project/Thesis represents a student’s capstone experience in the discipline. Students completing a double major in another field are encouraged to propose interdisciplinary projects of their choosing.
By the end of the course, the student will be able to:
Course content
The course involves an application development or investigation of a relevant problem in the Software Engineering domain. The problem is identified by the students and should have practical and/or theoretical relevance for the SE domain. Students work individually or in pairs preferably within a company setting in which the problem they address is investigated. The investigation should be documented in the form of a written report.