You essentially look at population growth and consequently you could model growth rates directly. Here is a example in R
.
First, get some data (China in this case):
# Pop China rounded (mio.)
# https://en.wikipedia.org/wiki/Demographics_of_China
df = data.frame(c(547,609,667,715,818,916,981,1045),c(1950,1955,1960,1965,1970,1975,1980,1985))
colnames(df)<-c("pop","year")
df
This looks like:
pop year
1 547 1950
2 609 1955
3 667 1960
4 715 1965
5 818 1970
6 916 1975
7 981 1980
8 1045 1985
Next I run a "normal" linear regression (level-level):
# Normal linear regression "level-level"
reg1 = lm(pop~year,data=df)
summary(reg1)
# Predict / plot result
pred1 = predict(reg1, newdata=df)
plot(df$year, pred1, type="b")
lines(df$year, df$pop, type = "o", col = "blue")
Results are not bad: Adjusted R-squared: 0.9891. Also the plot (actual vs. predicted) looks really good.

However, we can model growth rates directly using a "log-level" specification. In this case, the dependent variable $y$ simply is "transformed" to $log(y)$, so that the regression model looks like:
$$ log(y) = \beta_0 + \beta_1 x + u .$$
Note that the interpretation of $\beta_1$ has changed now. If you increase $x$ (the year) by one unit, $y$ changes (c.p. on average) by $100(\exp^{\beta_1}-1)$ percent. This is the average population growth rate in the period 1950-1985. Here in this example, the average growth rate was about 1.9 percent per year.
# Linear regression log-level
reg2 = lm(log(pop)~year,data=df)
summary(reg2)
reg2$coefficients[2]
# The average growth rate
exp(reg2$coefficients[2])-1
# Predict / plot result
pred2 = exp(predict(reg2, newdata=df))
plot(df$year, pred2, type="b")
lines(df$year, df$pop, type = "o", col = "blue")
Note that we see a slightly better model fit here, since log-level transformations usually can smooth out a little bit of "wonkiness" in the data. We can also look at the plot.

Next we can move to "out of sample" prediction until 2015.
# "Out of sample" prediction
preddf = data.frame(c(1950,1955,1960,1965,1970,1975,1980,1985,1990,1995,2000,2005,2010,2015))
colnames(preddf)<-c("year")
pred3 = exp(predict(reg2, newdata=preddf))
# Actual figures
actual = c(547,609,667,715,818,916,981,1045,1135,1204,1263,1304,1338,1375)
result = data.frame(cbind(preddf,round(pred3),actual))
colnames(result)<-c("year","pred","act")
result
# Plot results
plot(result$year, result$pred, type="b")
lines(result$year, result$act, type = "o", col = "blue")
The results look like:
year pred act
1 1950 551 547
2 1955 606 609
3 1960 666 667
4 1965 733 715
5 1970 806 818
6 1975 887 916
7 1980 976 981
8 1985 1073 1045
9 1990 1180 1135
10 1995 1298 1204
11 2000 1428 1263
12 2005 1571 1304
13 2010 1728 1338
14 2015 1900 1375

Wow... Bonkers! What happend? Well, aparently China's population growth did change. Growth decreased and we are not able to capture this trend in the data. What could be done? Maybe use (non-linear) generalised additive models, e.g. with regression splines. However, this will likely give poor results. Alternatively, I could estimate future growth only based on the last three or four observations, assuming that they are most representative for future growth. Note the differend trend in population growth between 1975 and 1985 (looks "flatter"). We could use this more recent patterns to get a better estimate.
Find an application of this technique (log-level linear regression) to Covid-19 on this Github.
Splendid! Someone just did your homework ;-)