Project design and implementation with an emphasis on team work, documentation, and the employment and integration of computer science concepts. This class provides a hands-on experience designing and developing a real-world software system. The course will emphasize collaboration and teamwork to employ and integrate computer science concepts. Students will work on a project that will serve as the capstone to the computer science degree program. Technical instruction, research, software implementation and delivered products will be required.
The course introduces students to the fundamentals of data models: organizing, managing, and using different types of data that arise in real-world applications. The course introduces students to several alternative data models and database solutions, emphasizing their strengths and limitations in the context of real-world applications. Topics covered include the relational databases, key-value stores, column-oriented databases, vector-space databases, graph databases, and distributed file systems together with their applications in solving real-world big data management problems. Upon completion of the course, the students will be able to choose an appropriate data model and database solution for a given application, and use the chosen database to organize, manage, and use data in the context of specific applications.
Discrete mathematics and foundations for modern computer science. Topics include sets, relations, logic, algorithms, graphs, finite state machines and regular expressions.
Software development process, life cycle; requirements analysis, specification, design, prototyping, testing, project management, and documentation.
This course introduces students to core software engineering techniques and methodologies for developing large-scale software systems. It covers development processes, human factors, formal methods, testing and validation, maintenance, and teamwork. Students also strengthen their written communication skills through a semester-long project focused on writing clear and detailed software requirements for both technical and non-technical audiences.