Computer Science and Engineering
Matt E. Thatcher, Chair
The Department of Computer Science and Engineering offers baccalaureate degrees with majors in computer engineering, computer information systems, and computer science. All three programs provide students with the knowledge and skills to work as practitioners in all aspects of the computing and information processing industries. The major in computer science allows students to focus primarily on the software aspects of computing and applications in the humanities and sciences; the major in computer engineering includes courses in electronics and computer hardware as well as software; the major in computer information systems is designed for persons who are primarily interested in business and data processing applications. Students expecting to pursue graduate study in either computer science or engineering are advised to follow the computer science or computer engineering programs. The department also serves many disciplines within the University through course offerings that provide basic computing skills necessary for the pursuit of studies in other fields. A minor in computer science is available.
Bachelor’s/Master’s Accelerated Programs
A combined B.S./M.S. or B.S./M.E. degree program is available to undergraduate students in computer science and engineering with 90 or more hours earned toward their baccalaureate degrees. Students accepted into this program must have a minimum overall GPA of 3.40 and at least 3.40 in the course work taken in computer science and engineering. Up to nine credit hours at the 500 level or above may be applied toward both the B.S. and M.S. or M.E. degree requirements. The approval of the student’s advisor and the graduate director is required. Questions about this program should be directed to the graduate director.
A combined B.S./I.M.B.A. degree program is available to undergraduate students in computer science and engineering with 90 or more hours earned toward their baccalaureate degrees. Students must be approved by the Department of Computer Science and Engineering and accepted by the Moore School of Business for the I.M.B.A. program. Students must have a minimum overall GPA of 3.40, one year or equivalent of appropriate professional work experience, and satisfactory scores on the GMAT examination. Up to 9 credit hours of graduate courses may be used for dual credit in both programs with the approval of both program directors. Questions about this program should be directed to the undergraduate director.
Courses
History, application, and social impact of computers; problem-solving, algorithm development, applications software, and programming in a procedural language.
Carolina Core: ARP
Introduction to systematic computer problem-solving and programming for a variety of applications.
Carolina Core: ARP
Programming and application development using selected programming languages. Course content varies and will be announced in the schedule of classes by title.
Number systems, Boolean algebra, logic design, sequential machines.
UNIX operating system, user-level system commands, and programming tools. UNIX scripting languages.
Web technologies to support client-server computing. Implementation of client-server applications.
Advanced object-oriented concepts and techniques; multiple inheritance; memory management; operator overloading; polymorphism; performance issues.
Fundamentals of software design and development; software implementation strategies; object-oriented design techniques; functional design techniques; design patterns; design process; source control; testing.
Design and control of robots. Interactions between robots, sensing, actuation, and computation.
Professional issues in the information technology professions; history and social context of computing; professional responsibilities; privacy; intellectual property; risks and liabilities of computer-based systems.
Carolina Core: VSR
Concepts and components of computer networks and the Internet; network applications; network protocol stack.
Major team-based software design project to be undertaken in a student’s final year of study; project planning, software requirements analysis, design, and specification. Written reports and oral presentations in a technical setting.
Graduation with Leadership Distinction: GLD: Professional and Civic Engagement Internships, GLD: Research
Continuation of CSCE 490. Computer system implementation, testing, verification and validation of results. Written reports and oral presentations in a technical setting.
Graduation with Leadership Distinction: GLD: Professional and Civic Engagement Internships, GLD: Research
Individual investigation or study of special topics. At most three credits may be applied toward a degree. Approval of project proposal by instructor and department advisor.
Graduation with Leadership Distinction: GLD: Research
Computer networks and communication protocols; socket programming; interprocess communication; development of network software; case studies.
Structure, design, and analysis of computer networks; ISO/OSI network architecture.
Fundamental principles and techniques of ethical hacking, including penetration testing life cycle, planning and scoping, identifying targets and goals, active and passive reconnaissance, enumeration and scanning, exploitation, post-exploitation, and results reporting.
Threats to information resources and appropriate countermeasures. Cryptography, identification and authentication, access control models and mechanisms, multilevel database security, steganography, Internet security, and intrusion detection and prevention.
Cooperative information systems and service-oriented computing. Techniques for achieving coordinated behavior among a decentralized group of information system components. Distributed databases, multiagent systems, conceptual modeling, Web services, and applications.
Techniques for design and implementation of compilers, including lexical analysis, parsing, syntax-directed translation, and symbol table management.
Development of mobile applications, including user interface design for mobile, local and cloud data storage techniques, and application architectures.
Object-oriented methods and tools for application programming with graphically interactive operating systems.
Construction of software systems resistant to vulnerabilities and attacks. Cryptographic tools. Language, operating system, and network security. Case studies. Development of best practices through programming assignments.
Concepts, algorithms and tools for important problems in Bioinformatics, including nucleotide and amino acid sequence alignment, DNA fragment assembly, phylogenetic reconstruction, and protein structure visualization and assessment.
Design of secret codes for secure communication, including encryption and integrity verification: ciphers, cryptographic hashing, and public key cryptosystems such as RSA. Mathematical principles underlying encryption. Code-breaking techniques. Cryptographic protocols.
Cross-listed course: MATH 587
Interpolation and approximation of functions; solution of algebraic equations; numerical differentiation and integration; numerical solutions of ordinary differential equations and boundary value problems; computer implementation of algorithms.
Cross-listed course: MATH 527
Foundational techniques in multidisciplinary software development, specifically of applications designed to present sensitive, sometimes controversial, materials in ways to engender empathic awareness of the interactor.
Cross-listed course: FAMS 581
Interdisciplinary approach to interaction design, user-centered design, human abilities, survey development, experimental study methodology, heuristic evaluations, usability testing, universal design, and accessibility.
Heuristic problem solving, theorem proving, and knowledge representation, including the use of appropriate programming languages and tools.
Normative approaches to uncertainty in artificial intelligence. Probabilistic and causal modeling with Bayesian networks and influence diagrams. Applications in decision analysis and support. Algorithms for probability update in graphical models.
Cross-listed course: STAT 582
Foundational techniques and tools required for data science and big data analytics. Concepts, principles, and techniques applicable to any technology and industry for establishing a baseline that can be enhanced by future study.
Cross-listed course: STAT 587
Reading and research on selected topics in information technology. Course content varies and will be announced in the schedule of courses by title. May be repeated for credit as topics vary.
Strategic management and use of information systems in organizations.
Cross-listed course: MGSC 594
Design techniques for logic systems; emphasis on higher-level CAD tools such as hardware description languages and functional modeling.
VLSI design process models, introduction to EDA tools, HDL modeling and simulation, logic synthesis and simulation, benchmark design projects.
Design of VLSI circuits, including standard processes, circuit design, layout, and CAD tools. Lecture and guided design projects.