Today is Friday, September 8, 2023. Although I often thought I should write something to look back on the past half year, I never managed to find the time. Sometimes I was busy, but more often I was just lazy. Now, as a student, I have already passed more than half of my undergraduate years. As a person, I have already passed the second decade of my life. At this moment I am listening to a light instrumental piece, “Our Youth,” slightly melancholy. Maybe the listener is reading too much into it, but there is indeed a little gloom in my heart.

Before successfully transferring majors, my heart was tormented. Every day I often thought about how this matter would end. After succeeding, I did not feel relaxed. A goal I had struggled toward for two years was over. And then what? I looked around and could not see fire: perhaps only faint firefly-like starlight, or perhaps a dazzling beam of hope that could drive this machine of mine to run at high speed again, pointing somewhere into the future. There was none. I was blind. I had forgotten.

What is best about youth? I think it is simplicity, innocence, and cotton-candy clouds you can touch as soon as you reach out. There is a saying: “Only children make choices; adults want everything.” I think the opposite is true: life is always full of choices, always forcing me to answer multiple-choice questions, always requiring me to give something up first before I can gain something.

It has been a long time since I wrote this kind of nonsense. Suddenly I realize I almost do not recognize myself anymore. Maybe this is how people change.


Enough rambling. Let me talk about what happened in the past half year.

The most important thing was transferring majors. It was probably the longest-running task of my undergraduate life: two years, from failure to success, from almost succeeding to almost failing. Thinking back, the path was indeed not easy.

It seems that in my first three semesters, I always woke up before 8 a.m. But in the second semester of sophomore year, the only 8 a.m. class on Wednesday was ICS, which I never attended, and the Thursday 8 a.m. table tennis class, for which I definitely had to get up early. For the rest of the time, my schedule gradually shifted to waking up at 8 or 9 a.m.

I had already forgotten many things from last semester, but suddenly remembered that starting from April 8, I began using Obsidian to keep a diary, mainly TODOs and scattered notes. Reading through them, I roughly recalled some of my state of mind at the time.

image.png

This is the diary entry from the day before the transfer exam. It looks as if everything was ready, and this was almost exactly what I had been doing for the past few months. But that night, I experienced the second sleepless night of my life. The first one was before the Gaokao in my senior year of high school. This time, if I had not had diarrhea that night, I do not know whether I could have fallen asleep. But the fact was absurd: when I thought everything was ready, my body failed me. I went to the bathroom several times that night, about once an hour, and had diarrhea all night until after 6 a.m. the next morning. I asked a roommate for several packets of medicine, and then went to the exam. Fortunately, that medicine did prevent diarrhea during the exam.

On the first day, there was a written exam in the morning and a programming exam in the afternoon. The exam room was right next to the computer room where I am sitting now. Eighteen sophomores came to compete for the final 11, actually 10, spots. I did not perform very well on the written exam. Among the four questions, the two I could solve were calculus and linear algebra from freshman year, but because I had forgotten some knowledge, there were details I did not handle well. I thought about the first graph theory question for quite a while and finally came up with an approach I believed was correct at the time. When the exam ended, I felt pretty good. But in fact, I got the first question wrong. The afternoon programming exam is the one I remember most clearly, because last year I failed mainly because I did not perform well in the programming exam. The programming exams in these three years were never easy. The questions were always too hard, so the key to victory basically lay in the easiest of the three: if you solved it, there was hope; if you did not, it was basically over. Last year, the easiest problem was a template DP problem that required recording the concrete solution. At the time I had only self-studied some DP and could not solve it. This year, the easiest problem was a greedy problem. One of my friends AC’d it in about 14 minutes. I probably spent half an hour writing the code, submitted it, and got 10 points. At the time I completely failed to notice that while modifying code during debugging, I had reduced the constant maxn to 10. This meant my code was correct when the data size did not exceed 10, so it passed all hand-crafted samples, but for the problem’s maximum data size of 1e7, it could only get 10 points. Maybe because I was nervous, I never thought the issue was that the constant was too small. Also, the error was reported as TLE rather than RE, so my first reaction was that my while loop was wrong. I modified the code again and again, probably rewriting it six times. But because every time I copied from the previous version, the constant issue remained. Two and a half hours passed like that. With only half an hour left, I went to the bathroom. At that moment I was completely withered. It felt as if history was repeating itself. Last year I had also “sat in prison” for three and a half hours without achieving anything. After coming back, I suddenly noticed the constant bug. Hope immediately reignited. Sure enough, after changing the constant and submitting again, it AC’d. My score went from 30 to 110. I almost shouted out loud. Hope had returned. Later, I made some optimizations on T2 and raised the score to 130, moving from 18/18 half an hour earlier to 5/18. Unfortunately, if there had been more time, T2 could probably have been improved by at least another 10 points. But compared with the previous 100 points, that was no longer worth mentioning. In that final half hour, I really experienced the feeling of going from hell to heaven. In fact, T1 was not a difficult problem. It did not even require any data structure, just pure greedy simulation. But in the exam environment, that tiny oversight took me two hours to discover. Those two hours probably counted as a “darkest hour.”

After the first day ended, I talked with a few classmates I knew and found that my chances might be good, but everyone seemed to have performed very closely, so there was still hidden worry. I was lucky in the interview on the second day, whereas last year’s interview had been unlucky. I answered basically all the teachers’ questions well, except for one question asking for an example of how “lattices” appear in programming.

After the exam, I felt that I probably had hope this time. But I could not guarantee the final result, because among those 18 sophomores, the ability gap was not large. They were all strong, at least compared with the average level of the computer science department.

In the two or three months before the exam, my life pattern was: fumble through the two lab courses in my original major (PS, I really am not cut out for experiments. Fortunately the teachers did not make things hard for me, and the chemistry students were also rather relaxed), and spend the rest of my time on CS courses and exam preparation. For ICS, I had already completed part of the PA labs during the winter vacation, and within one month after the semester started I had finished the PA, so I basically spent no more time on that course. I spent a lot of time and energy on the other algorithm and graph theory courses. One thing that gave me a sense of achievement was organizing my own answers to most of the exercises in the algorithm textbook. In the end, I got pretty good scores in both ICS and algorithms. (Sorry, Professor cg, graph theory did not reach 90.) So after transferring into computer science, my ranking was quite high.

image.png

After the results came out, it suddenly felt as if there were many things to do, though actually these things should have started much earlier: deciding on a research direction, contacting advisors, thinking about whether to study abroad or pursue graduate school domestically, and taking the TOEFL. But it already felt somewhat late. First, I had not participated in a summer exchange. Second, I had not attended summer camps. So basically I studied TOEFL and read papers.

Looking back now, in terms of what I have achieved, there is really not much. There is almost nothing outstanding. Apart from GPA, because I had not completed the courses in my original major during the first two years due to transferring, I could not apply for scholarships, and I also voluntarily gave up many opportunities because of the transfer, maybe including something else too. Compared with others, the things I obtained may have been easy for them to get long ago, and they might not even care about them much. So I suppose it is also hard for others to understand those invisible processes I went through.

The future is long, but also short: in less than a year, I will decide where I will be and what research I will do. Everything is still uncertain, both research direction and whether to go abroad. Start doing things first. A new journey has already begun.